Что эквивалентно статическим конечным полям 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{ }
Ответ 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{ }