1概要

この簡単なチュートリアルでは、Javaの

static final

変数とKotlinのそれらと同等のものについて説明します。

Javaでは、

__static final

__variablesを宣言することで定数を作成することができます。そしてKotlinでは、同じ目標を達成するためのいくつかの方法があります。


2

オブジェクト


の中

まず、Kotlinの

object

で定数を宣言することを見てみましょう。

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

を使用します。

Javaの静的最終変数と同じ方法で、Kotlinコードでそれらを呼び出します。

@Test
fun givenConstant__whenCompareWithActualValue__thenReturnTrue() {
    assertEquals(10, TestKotlinConstantObject.COMPILE__TIME__CONST)
    assertEquals(30, TestKotlinConstantObject.RUN__TIME__CONST)
}

ただし、Javaコードで

TestKotlinConstantObject.RUN

TIME

CONST

を使用することはできません。


const

キーワードなしの


__ val


キーワードは、Javaクラスが


を呼び出すためのKotlinフィールドをpublic__として公開しません。

そのため、Javaに優しい

static final

変数を作成するために

val

変数を公開する

@ JvmField

があります。

@JvmField val JAVA__STATIC__FINAL__FIELD = 20

これは、KotlinクラスとJavaクラスの両方で、

__ const val

__変数のように** 呼び出すことができます。

assertEquals(20, TestKotlinConstantObject.JAVA__STATIC__FINAL__FIELD)

また、

@ JvmFieldと同じように使用できる


@ JvmStaticもあります。ただし、



@ JvmStatic

は、Javaではプロパティアクセサを

static__にするため、ここでは使用しません。

3. Kotlinの内部

クラス

  • これらの定数の宣言はKotlinの

    class

    でも似ていますが、その

    companionオブジェクトの中です:

    **

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

そして、以前と同じことができます。

assertEquals(40, TestKotlinConstantClass.COMPANION__OBJECT__NUMBER)


5結論

この記事では、Kotlinで

const



val

、および

@ JvmField

を使用して静的な最終変数を作成しました。

いつものように、コードはhttps://github.com/eugenp/tutorials/tree/master/core-kotlin[GitHubに載って]を見つけることができます。