Oprettelse af Java-statiske endelige ækvivalenter i Kotlin

1. Oversigt

I denne hurtige vejledning diskuterer vi statisk endelig variabler i Java og deres ækvivalente i Kotlin.

I Java, erklærer statisk endelig variabler hjælper os med at skabe konstanter. Og i Kotlin har vi flere måder at nå det samme mål på.

2. Inde i en objekt

Lad os først se på at erklære konstanter i en Kotlin objekt:

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

I ovenstående eksempel vi bruger konst at erklære en kompileringstidskonstant, og val at erklære en driftstidskonstant.

Vi kalder dem i vores Kotlin-kode på samme måde som Java statisk endelig variabler:

@Test sjov givetConstant_whenCompareWithActualValue_thenReturnTrue () {assertEquals (10, TestKotlinConstantObject.COMPILE_TIME_CONST) assertEquals (30, TestKotlinConstantObject.RUN_TIME_CONST)}

Bemærk dog, at vi ikke kan bruge TestKotlinConstantObject.RUN_TIME_CONST i Java-kode. Det val nøgleord i sig selv uden konst nøgleord, udsætter ikke Kotlin-felter som offentlig for Java-klasser at ringe til.

Det er grunden til, at vi har det @JvmField at afsløre val variabler for at oprette Java-venlige statisk endelig variabler:

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Vi kan kalde denne ligesom en konst variabel i både Kotlin- og Java-klasser:

assertEquals (20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

Derudover har vi også @JvmStatic, som vi kan bruge på en lignende måde som @JvmField. Men vi bruger det ikke her siden @JvmStatic gør ejendommen adgang statisk i Java, men ikke selve variablen.

3. Inde i en Kotlin klasse

Erklæringen om disse konstanter er ens i en Kotlin klasse, men inde i dens ledsagerobjekt:

klasse TestKotlinConstantClass {ledsagende objekt {const val COMPANION_OBJECT_NUMBER = 40}}

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

assertEquals (40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Konklusion

I denne artikel har vi gennemgået brugen af konst, valog @JvmField i Kotlin for at oprette statiske endelige variabler.

Som altid kan koden findes på GitHub.