O primeiro exemplo (com campo const) pode ser usado para atributos. Caso popular: declare todos os caminhos da API no arquivo único e faça referência a controladores com esse código: "@RequestMapping (path = arrayOf (WebPathConstants.MapApiPath))" (atributo Spring Boot)
Manushin Igor
Oi pessoal! Você sabe se esse @JvmField ainda é necessário? Estou usando isso no android e ele mostra um aviso de cotão dizendo que "const" pode ser usado. Alterei para const e a classe java que o está usando não apresenta problemas.
Leandro Ocampo
1
@LeandroOcampo ainda é necessário se você tiver um campo estático mutável, const val- compile o tempo constante e, com certeza, ele poderá ser usado como substituto @JvmField valem alguns casos. Através dele, não funciona se o valor - calculado em tempo de execução, ou não é do tipo primitivo ou String. Ref: kotlinlang.org/docs/reference/...
Ruslan
36
se você tem uma implementação Hello, use companion objectdentro de uma classe
classHello{
companion object{
val MAX_LEN =1+1}}
if Helloé um objeto singleton puro
objectHello{
val MAX_LEN =1+1}
se as propriedades forem constantes em tempo de compilação, adicione uma constpalavra - chave
objectHello{const val MAX_LEN =20}
se você quiser usá-lo em Java, adicione @JvmStaticanotação
Respostas:
De acordo com a documentação da Kotlin , isso é equivalente:
Uso:
Também é uma propriedade final estática (campo com getter):
E, finalmente, este é o campo final estático:
fonte
const val
- compile o tempo constante e, com certeza, ele poderá ser usado como substituto@JvmField val
em alguns casos. Através dele, não funciona se o valor - calculado em tempo de execução, ou não é do tipo primitivo ou String. Ref: kotlinlang.org/docs/reference/...se você tem uma implementação
Hello
, usecompanion object
dentro de uma classeif
Hello
é um objeto singleton purose as propriedades forem constantes em tempo de compilação, adicione uma
const
palavra - chavese você quiser usá-lo em Java, adicione
@JvmStatic
anotaçãofonte
Para mim
foi muito clichê. Simplesmente coloquei os campos finais estáticos acima da minha classe assim
fonte
private
), essa definição é a mais concisa.