Opprette statiske Java-ekvivalenter i Kotlin

1. Oversikt

I denne raske opplæringen vil vi diskutere statisk finale variabler i Java og tilsvarende i Kotlin.

I Java, erklærer statisk finale variabler hjelper oss med å skape konstanter. Og i Kotlin har vi flere måter å oppnå det samme målet på.

2. Inne i en gjenstand

For det første, la oss ta en titt på å erklære konstanter i en Kotlin gjenstand:

objekt TestKotlinConstantObject {const val COMPILE_TIME_CONST = 10 val RUN_TIME_CONST: Int init {RUN_TIME_CONST = TestKotlinConstantObject.COMPILE_TIME_CONST + 20; }}

I eksemplet ovenfor, vi bruker const val å erklære en kompileringstidskonstant, og val å erklære en kjøretidskonstant.

Vi kaller dem i vår Kotlin-kode på samme måte som Java statisk finale variabler:

@Test fun givenConstant_whenCompareWithActualValue_thenReturnTrue () {assertEquals (10, TestKotlinConstantObject.COMPILE_TIME_CONST) assertEquals (30, TestKotlinConstantObject.RUN_TIME_CONST)}

Vær imidlertid oppmerksom på at vi ikke kan bruke TestKotlinConstantObject.RUN_TIME_CONST i Java-kode. De val søkeord av seg selv, uten konst søkeord, utsetter ikke Kotlin-felt som offentlig for Java-klasser å ringe.

Det er grunnen til at vi har det @JvmField å avsløre val variabler for å lage Java-vennlige statisk finale variabler:

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Vi kan kalle denne akkurat som en const val variabel i både Kotlin- og Java-klasser:

assertEquals (20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

I tillegg har vi også @JvmStatic, som vi kan bruke på en lignende måte som @JvmField. Men vi bruker den ikke her siden @JvmStatic gjør eiendommen tilgang statisk i Java, men ikke selve variabelen.

3. Inne i en Kotlin klasse

Erklæringen om disse konstantene er lik i en Kotlin klasse, men inne i det ledsagerobjekt:

klasse TestKotlinConstantClass {ledsagerobjekt {const val COMPANION_OBJECT_NUMBER = 40}}

Og vi kan gjøre det samme som før:

assertEquals (40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Konklusjon

I denne artikkelen har vi gått gjennom bruken av konst, val, og @JvmField i Kotlin for å lage statiske endelige variabler.

Som alltid kan koden bli funnet på GitHub.


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