Відповіді:
Згідно з документацією Котліна, це рівнозначно:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Використання:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
Також це статична кінцева властивість (поле з getter):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
І нарешті це статичне заключне поле:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
const val
- компілюйте постійну часу і, безумовно, воно може бути використане в якості заміни @JvmField val
в деяких випадках. Через нього не працює, якщо значення - обчислено під час виконання, або це не примітивний тип або String. Посилання: kotlinlang.org/docs/reference/…
якщо у вас є реалізація в 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
}
Для мене
object Hello {
const val MAX_LEN = 20
}
було багато котла. Я просто ставлю статичні кінцеві поля вище свого класу, як це
val MIN_LENGTH = 10
class MyService{
}
private
), це визначення є найбільш стислим.