Stvaranje Java statičkih završnih ekvivalenata u Kotlinu

1. Pregled

U ovom ćemo brzom vodiču razgovarati statički konačni varijable u Javi i njihov ekvivalent u Kotlinu.

U Javi, izjavljujući statički konačni varijable pomaže nam u stvaranju konstanti. I u Kotlinu imamo nekoliko načina za postizanje istog cilja.

2. Unutar an objekt

Prvo, pogledajmo deklariranje konstanti u Kotlinu objekt:

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

U gornjem primjeru, koristimo const val proglasiti konstantu vremena kompajliranja i val proglasiti konstantu vremena izvođenja.

Zovemo ih u našem Kotlin kodu na isti način kao i Java statički konačni varijable:

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

Ipak, imajte na umu da ne možemo koristiti TestKotlinConstantObject.RUN_TIME_CONST u Java kodu. The val ključna riječ sama po sebi, bez konst ključna riječ, ne izlaže polja Kotlin kao javnost za pozive Java klasa.

To je razlog zašto imamo @JvmField izlagati val varijable za stvaranje Java-friendly statički konačni varijable:

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Možemo nazvati ovu baš kao i const val varijabla u razredima Kotlin i Java:

assertEquals (20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

Uz to imamo i mi @JvmStatic, koje možemo koristiti na sličan način @JvmField. Ali od tada ga ovdje ne koristimo @JvmStatic čini pristupnik imovine statički u Javi, ali ne i sama varijabla.

3. Unutar Kotlina razred

Izjave ovih konstanti slične su u Kotlinu razred, ali unutar svog popratni objekt:

klasa TestKotlinConstantClass {prateći objekt {const val COMPANION_OBJECT_NUMBER = 40}}

A možemo učiniti isto kao i prije:

assertEquals (40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Zaključak

U ovom smo članku prošli kroz konst, val, i @JvmField u Kotlinu za stvaranje statičkih završnih varijabli.

Kao i uvijek, kod se može pronaći na GitHub-u.


$config[zx-auto] not found$config[zx-overlay] not found