Respuestas:
Según la documentación de Kotlin , esto es equivalente:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Uso:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
También esta es la propiedad final estática (campo con getter):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
Y finalmente este es el campo estático final:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
const val
compile la constante de tiempo y, con seguridad, puede usarse como reemplazo @JvmField val
en algunos casos. A través de él no funciona si el valor se calcula en tiempo de ejecución, o no es un tipo primitivo o una cadena. Ref: kotlinlang.org/docs/reference/…
si tiene una implementación en Hello
, use companion object
dentro de una clase
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
si Hello
es un objeto singleton puro
object Hello {
val MAX_LEN = 1 + 1
}
si las propiedades son constantes de tiempo de compilación, agregue una const
palabra clave
object Hello {
const val MAX_LEN = 20
}
si quieres usarlo en Java, agrega @JvmStatic
anotaciones
object Hello {
@JvmStatic val MAX_LEN = 20
}
Para mi
object Hello {
const val MAX_LEN = 20
}
fue demasiado repetitivo. Simplemente pongo los campos finales estáticos por encima de mi clase de esta manera
val MIN_LENGTH = 10
class MyService{
}
private
), esta definición es la más concisa.