KotlinでのJava静的最終同等物の作成
1. 概要
このクイックチュートリアルでは、Javaのstatic final変数と、Kotlinの同等の変数について説明します。
Javaでは、declaring static final variables helps us create constants。 Kotlinでは、同じ目標を達成するための方法がいくつかあります。
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.
Javastatic final変数と同じ方法で、Kotlinコードでそれらを呼び出します。
@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。
これが、val変数を公開してJava対応のstatic final変数を作成するための@JvmFieldがある理由です。
@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)
さらに、@JvmField.と同様の方法で使用できる@JvmStatic, もありますが、@JvmStatic makes the property accessor static in Java but not the variable itself.なので、ここでは使用していません。
3. Kotlinの内部class
これらの定数の宣言は、Kotlinのclassでも同様ですが、companion object:の内部にあります。
class TestKotlinConstantClass {
companion object {
const val COMPANION_OBJECT_NUMBER = 40
}
}
そして、前と同じことができます。
assertEquals(40, TestKotlinConstantClass.COMPANION_OBJECT_NUMBER)
5. 結論
この記事では、Kotlinでconst、val、および@JvmFieldを使用して、静的最終変数を作成する方法について説明しました。
いつものように、コードはover on GitHubで見つけることができます。