El primer ejemplo (con campo constante) se puede usar para atributos. Caso popular: declare todas las rutas de API web en el archivo único y haga referencia a él desde los controladores con dicho código: "@RequestMapping (path = arrayOf (WebPathConstants.MapApiPath))" (atributo Spring Boot)
Manushin Igor
¡Hola chicos! ¿Sabes si este @JvmField sigue siendo necesario? Estoy usando esto en Android y muestra una advertencia de pelusa que dice que "const" se puede usar en su lugar. Lo cambié a const y la clase de Java que lo está utilizando no tiene ningún problema.
Leandro Ocampo
1
@LeandroOcampo aún es necesario en caso de que tenga un campo estático mutable, const valcompile la constante de tiempo y, con seguridad, puede usarse como reemplazo @JvmField valen 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/…
Ruslan
36
si tiene una implementación en Hello, use companion objectdentro de una clase
classHello{
companion object{
val MAX_LEN =1+1}}
si Helloes un objeto singleton puro
objectHello{
val MAX_LEN =1+1}
si las propiedades son constantes de tiempo de compilación, agregue una constpalabra clave
objectHello{const val MAX_LEN =20}
si quieres usarlo en Java, agrega @JvmStaticanotaciones
Respuestas:
Según la documentación de Kotlin , esto es equivalente:
Uso:
También esta es la propiedad final estática (campo con getter):
Y finalmente este es el campo estático final:
fuente
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
, usecompanion object
dentro de una clasesi
Hello
es un objeto singleton purosi las propiedades son constantes de tiempo de compilación, agregue una
const
palabra clavesi quieres usarlo en Java, agrega
@JvmStatic
anotacionesfuente
Para mi
fue demasiado repetitivo. Simplemente pongo los campos finales estáticos por encima de mi clase de esta manera
fuente
private
), esta definición es la más concisa.