Създаване на статични крайни еквиваленти на Java в Kotlin

1. Общ преглед

В този бърз урок ще обсъдим статичните финални променливи в Java и техния еквивалент в Kotlin.

В Java декларирането на статични крайни променливи ни помага да създаваме константи . И в Котлин имаме няколко начина да постигнем една и съща цел.

2. Вътре в обект

Първо, нека да разгледаме декларирането на константи в обект Kotlin :

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

В горния пример използваме const val, за да декларираме константа на времето за компилация и val, за да декларираме константа на време на изпълнение.

Ние ги наричаме в нашия Kotlin код по същия начин като статичните крайни променливи на Java :

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

Имайте предвид обаче, че не можем да използваме TestKotlinConstantObject.RUN_TIME_CONST в Java кода . В Вал дума само по себе си, без да Конст ключова дума, не експозе Kotlin области като публично за класове на Java за повикване .

Това е причината, поради която имаме @JvmField, за да изложим променливи val, за да създадем статични крайни променливи, удобни за Java :

@JvmField val JAVA_STATIC_FINAL_FIELD = 20

Можем да го наречем точно като const val променлива както в Kotlin, така и в Java класове :

assertEquals(20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)

Освен това имаме и @JvmStatic, който можем да използваме по подобен начин на @JvmField. Но ние не го използваме тук, тъй като @JvmStatic прави достъпността на свойствата статична в Java, но не и самата променлива.

3. В клас Kotlin

Декларацията на тези константи е подобна в клас Kotlin , но вътре в придружаващия го обект:

class TestKotlinConstantClass { companion object { const val COMPANION_OBJECT_NUMBER = 40 } }

И можем да направим същото като преди:

assertEquals(40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)

5. Заключение

В тази статия сме преминали през използването на const , val и @JvmField в Kotlin за създаване на статични крайни променливи.

Както винаги, кодът може да бъде намерен в GitHub.