Risposte:
Secondo la documentazione di Kotlin questo è equivalente:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Uso:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
Anche questa è la proprietà finale statica (campo con getter):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
E infine questo è il campo finale statico:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
const val
- compila la costante di tempo e sicuramente può essere usato come sostituto @JvmField val
in alcuni casi. Attraverso di esso non funziona se valore - calcolato in runtime, o non di tipo primitivo o String. Rif: kotlinlang.org/docs/reference/…
se hai un'implementazione in Hello
, usa companion object
all'interno di una classe
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
se Hello
è un oggetto singleton puro
object Hello {
val MAX_LEN = 1 + 1
}
se le proprietà sono costanti in fase di compilazione, aggiungi una const
parola chiave
object Hello {
const val MAX_LEN = 20
}
se vuoi usarlo in Java, aggiungi l' @JvmStatic
annotazione
object Hello {
@JvmStatic val MAX_LEN = 20
}
Per me
object Hello {
const val MAX_LEN = 20
}
era troppo boilerplate. Metto semplicemente i campi finali statici sopra la mia classe in questo modo
val MIN_LENGTH = 10
class MyService{
}
private
), questa definizione è la più concisa.