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 valin 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 objectall'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 constparola chiave
object Hello {
const val MAX_LEN = 20
}
se vuoi usarlo in Java, aggiungi l' @JvmStaticannotazione
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.