Что эквивалентно статическим конечным полям Java в Котлине?
В Java, чтобы объявить константу, вы делаете что-то вроде:
class Hello {
public static final int MAX_LEN = 20;
}
Что эквивалентно в Котлине?
Ответы
Ответ 1
Согласно документации Котлина, это эквивалентно:
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
}
}
Ответ 2
если у вас есть реализация в 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
}
Ответ 3
Для меня
object Hello {
const val MAX_LEN = 20
}
было много шаблонов. Я просто поставил статические конечные поля над моим классом, как это
val MIN_LENGTH = 10
class MyService{
}