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.


$config[zx-auto] not found$config[zx-overlay] not found