Первый пример (с полем const) можно использовать для атрибутов. Популярный случай: объявить все пути веб-api в одном файле и ссылаться на него с контроллеров с помощью такого кода: «@RequestMapping (path = arrayOf (WebPathConstants.MapApiPath))» (атрибут Spring Boot)
Манушин Игорь
Привет, ребята! Вы знаете, нужен ли этот @JvmField? Я использую это в android, и он показывает предупреждение о том, что вместо него можно использовать «const». Я изменил его на const, и у того java-класса, который его использует, нет никаких проблем.
Леандро Окампо
1
@LeandroOcampo это все равно необходимо в случае, если у вас есть изменяемое статическое поле, const val- константа времени компиляции и наверняка может использоваться в качестве замены @JvmField valв некоторых случаях. Через него не работает, если значение - вычисленное во время выполнения, или это не примитивный тип или String. Ссылка: kotlinlang.org/docs/reference/…
Руслан
36
если у вас есть реализация Hello, используйте companion objectвнутри класса
classHello{
companion object{
val MAX_LEN =1+1}}
если Helloэто чистый одноэлементный объект
objectHello{
val MAX_LEN =1+1}
если свойства являются константами времени компиляции, добавьте constключевое слово
objectHello{const val MAX_LEN =20}
если вы хотите использовать его в Java, добавьте @JvmStaticаннотацию
Ответы:
Согласно документации Kotlin, это эквивалентно:
Использование:
Также это статическое свойство final (поле с геттером):
И наконец, это статическое финальное поле:
источник
const val
- константа времени компиляции и наверняка может использоваться в качестве замены@JvmField val
в некоторых случаях. Через него не работает, если значение - вычисленное во время выполнения, или это не примитивный тип или String. Ссылка: kotlinlang.org/docs/reference/…если у вас есть реализация
Hello
, используйтеcompanion object
внутри классаесли
Hello
это чистый одноэлементный объектесли свойства являются константами времени компиляции, добавьте
const
ключевое словоесли вы хотите использовать его в Java, добавьте
@JvmStatic
аннотациюисточник
Для меня
был слишком шаблонным. Я просто помещаю статические конечные поля над моим классом следующим образом
источник
private
), это определение является наиболее кратким.