Jawaban:
Menurut dokumentasi Kotlin, ini setara:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Pemakaian:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
Juga ini adalah properti akhir statis (bidang dengan pengambil):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
Dan akhirnya ini adalah bidang terakhir statis:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
const val
- kompilasi konstanta waktu dan pasti dapat digunakan sebagai pengganti @JvmField val
dalam beberapa kasus. Melalui itu tidak berfungsi jika nilai - dihitung dalam runtime, atau bukan tipe primitif atau String. Ref: kotlinlang.org/docs/reference/…
jika Anda memiliki implementasi dalam Hello
, gunakan companion object
di dalam kelas
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
jika Hello
adalah objek tunggal murni
object Hello {
val MAX_LEN = 1 + 1
}
jika propertinya adalah konstanta waktu kompilasi, tambahkan const
kata kunci
object Hello {
const val MAX_LEN = 20
}
jika Anda ingin menggunakannya di Java, tambahkan @JvmStatic
anotasi
object Hello {
@JvmStatic val MAX_LEN = 20
}
Untuk saya
object Hello {
const val MAX_LEN = 20
}
adalah terlalu banyak boilerplate. Saya dengan sederhana meletakkan bidang terakhir statis di atas kelas saya seperti ini
val MIN_LENGTH = 10
class MyService{
}
private
), definisi ini adalah yang paling ringkas.