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.