web-dev-qa-db-ja.com

KotlinのJava static finalフィールドと同等のものは何ですか?

Javaでは、定数を宣言するには、次のようにします。

class Hello  {
 public static final int MAX_LEN = 20;
}

Kotlinで同等のものは何ですか?

88
pdeva

Kotlinによると ドキュメント これは同等です:

class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}

使用法:

fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}

また、これは静的な最終プロパティです(ゲッターのあるフィールド):

class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}

最後に、これは静的な最終フィールドです。

class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}
169
Ruslan

Helloに実装がある場合は、クラス内でcompanion objectを使用します

class Hello {
  companion object {
    val MAX_LEN = 1 + 1
  }

}

Helloが純粋なシングルトンオブジェクトの場合

object Hello {
  val MAX_LEN = 1 + 1
}

プロパティがコンパイル時定数の場合、 const キーワードを追加します

object Hello {
  const val MAX_LEN = 20
}

javaで使用する場合は、 @JvmStatic アノテーションを追加します

object Hello {
  @JvmStatic val MAX_LEN = 20
}
25
Gary LO

私のために

object Hello {
   const val MAX_LEN = 20
}

定型的なものでした。このように静的な最終フィールドをクラスの上に置くだけです

val MIN_LENGTH = 10

class MyService{
}
7
Simon Ludwig