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.