Создание статических Java-эквивалентов в Котлине
1. обзор
В этом кратком руководстве мы обсудим переменныеstatic final в Java и их эквивалент в Kotlin.
В Javadeclaring static final variables helps us create constants. А в Котлине у нас есть несколько способов достичь одной и той же цели.
2. Внутриobject
Во-первых, давайте посмотрим на объявление констант в Kotlinobject:
object TestKotlinConstantObject {
const val COMPILE_TIME_CONST = 10
val RUN_TIME_CONST: Int
init {
RUN_TIME_CONST = TestKotlinConstantObject.COMPILE_TIME_CONST + 20;
}
}
В приведенном выше примереwe use const val to declare a compile-time constant, and val to declare a run-time constant.
Мы вызываем их в нашем коде Kotlin так же, как переменные Javastatic final:
@Test
fun givenConstant_whenCompareWithActualValue_thenReturnTrue() {
assertEquals(10, TestKotlinConstantObject.COMPILE_TIME_CONST)
assertEquals(30, TestKotlinConstantObject.RUN_TIME_CONST)
}
Note, though, that we cannot use TestKotlinConstantObject.RUN_TIME_CONST in Java code. val keyword by itself, without const keyword, doesn’t expose Kotlin fields as public for Java classes to call.
По этой причине у нас есть@JvmField для предоставления переменныхval для создания дружественных к Java переменныхstatic final:
@JvmField val JAVA_STATIC_FINAL_FIELD = 20
Мы можем назвать этоjust like a const val variable in both Kotlin and Java classes:
assertEquals(20, TestKotlinConstantObject.JAVA_STATIC_FINAL_FIELD)
Кроме того, у нас также есть@JvmStatic, w, который мы можем использовать аналогично@JvmField.. Но мы не используем его здесь, поскольку@JvmStatic makes the property accessor static in Java but not the variable itself.
3. Внутри Котлинаclass
Объявление этих констант аналогично Kotlinclass, но внутри егоcompanion object:
class TestKotlinConstantClass {
companion object {
const val COMPANION_OBJECT_NUMBER = 40
}
}
И мы можем сделать то же, что и раньше:
assertEquals(40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)
5. Заключение
В этой статье мы рассмотрели использованиеconst,val и@JvmField в Kotlin для создания статических конечных переменных.
Как всегда, код можно найтиover on GitHub.