Java statikus végleges ekvivalensek létrehozása Kotlinban

1. Áttekintés

Ebben a gyors bemutatóban megbeszéljük statikus döntő változók Java-ban és megfelelőik Kotlinban.

Java-ban kijelentve statikus döntő változók segítenek konstansok létrehozásában. Kotlinban pedig többféleképpen érhetjük el ugyanazt a célt.

2. Belül egy tárgy

Először vessünk egy pillantást az állandók deklarálására egy Kotlinban tárgy:

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

A fenti példában használunk const val deklarálni egy fordítási időállandót, és val futási időállandónak nyilvánítani.

Kotlin kódunkban ugyanúgy hívjuk őket, mint a Java statikus döntő változók:

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

Megjegyezzük azonban, hogy nem használhatjuk TestKotlinConstantObject.RUN_TIME_CONST Java kódban. A val kulcsszó önmagában, anélkül konst kulcsszó, nem teszi ki a Kotlin mezőket nyilvános Java osztályok hívására.

Ez az oka annak, hogy van @JvmField kitesz val változókat a Java-barát létrehozásához statikus döntő változók:

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Nevezhetjük ezt akárcsak egy const val változó mind a Kotlin, mind a Java osztályokban:

assertEquals (20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

Ezen kívül nekünk is van @JvmStatic, amelyet hasonló módon használhatunk @JvmField. De azóta nem használjuk itt @JvmStatic teszi az ingatlan hozzáférõvé statikus Java-ban, de magát a változót nem.

3. Egy Kotlin belsejében osztály

Ezen állandók deklarálása hasonló egy Kotlinban osztály, de belül társobjektum:

osztály TestKotlinConstantClass {társobjektum {const val COMPANION_OBJECT_NUMBER = 40}}

És ugyanazt tehetjük, mint korábban:

assertEquals (40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Következtetés

Ebben a cikkben áttekintettük a konst, val, és @JvmField statlin végleges változók létrehozására.

Mint mindig, a kód megtalálható a GitHubon.