Vytváranie statických konečných ekvivalentov Java v Kotline
1. Prehľad
V tomto rýchlom návode si povieme statické finále premenné v Jave a ich ekvivalent v Kotline.
V Jave deklarovať statické finále premenné nám pomáhajú vytvárať konštanty. A v Kotline máme niekoľko spôsobov, ako dosiahnuť rovnaký cieľ.
2. Vo vnútri an objekt
Po prvé, poďme sa pozrieť na vyhlásenie konštánt v Kotline objekt:
objekt TestKotlinConstantObject {konštanta val COMPILE_TIME_CONST = 10 val RUN_TIME_CONST: Int init {RUN_TIME_CONST = TestKotlinConstantObject.COMPILE_TIME_CONST + 20; }}
Vo vyššie uvedenom príklade používame konšt. val vyhlásiť konštantu kompilácie a val vyhlásiť konštantu chodu.
V našom kóde Kotlin ich voláme rovnako ako Java statické finále premenné:
@Test fun givenConstant_whenCompareWithActualValue_thenReturnTrue () {assertEquals (10, TestKotlinConstantObject.COMPILE_TIME_CONST) assertEquals (30, TestKotlinConstantObject.RUN_TIME_CONST)}
Upozorňujeme však, že to nemôžeme použiť TestKotlinConstantObject.RUN_TIME_CONST v kóde Java. The val samotné kľúčové slovo, bez konšt kľúčové slovo, nevystavuje Kotlinove polia ako verejné aby volali triedy Java.
To je dôvod, prečo máme @JvmField vystaviť val premenné na vytvorenie Java statické finále premenné:
@JvmField val JAVA_STATIC_FINAL_FIELD = 20
Môžeme to nazvať rovnako ako a konšt. val premenná v triedach Kotlin aj Java:
assertEquals (20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)
Okrem toho máme tiež @JvmStatic, ktoré môžeme použiť podobným spôsobom ako @JvmField. Ale odvtedy to tu nepoužívame @JvmStatic robí vlastníka prístupom statický v Jave, ale nie v samotnej premennej.
3. Vo vnútri kotlina trieda
Deklarácia týchto konštánt je podobná aj v Kotline trieda, ale vo vnútri jeho sprievodný objekt:
trieda TestKotlinConstantClass {sprievodný objekt {konštanta COMPANION_OBJECT_NUMBER = 40}}
Môžeme urobiť to isté ako predtým:
assertEquals (40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)
5. Záver
V tomto článku sme prešli používaním konšt, vala @JvmField v Kotline na vytvorenie statických konečných premenných.
Ako vždy, kód nájdete na GitHub.