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.