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.