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 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/…si tiene una implementación en
Hello, usecompanion objectdentro de una clasesi
Helloes un objeto singleton purosi las propiedades son constantes de tiempo de compilación, agregue una
constpalabra clavesi quieres usarlo en Java, agrega
@JvmStaticanotacionesfuente
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.