KotlinでJavaの静的最終等価物を作成

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 codeval 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でconstval、および@JvmFieldを使用して、静的最終変数を作成する方法について説明しました。

いつものように、コードはover on GitHubで見つけることができます。