Câu trả lời:
Theo tài liệu của Kotlin, điều này là tương đương:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Sử dụng:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
Ngoài ra đây là thuộc tính tĩnh cuối cùng (trường có getter):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
Và cuối cùng đây là trường cuối cùng tĩnh:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
const val- biên dịch hằng số thời gian và chắc chắn nó có thể được sử dụng để thay thế @JvmField valtrong một số trường hợp. Thông qua nó không hoạt động nếu giá trị - được tính trong thời gian chạy, hoặc nó không phải là kiểu nguyên thủy hoặc Chuỗi. Tham chiếu: kotlinlang.org/docs/reference/ Kẻ
nếu bạn có một triển khai trong Hello, sử dụng companion objectbên trong một lớp
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
nếu Hellolà một đối tượng đơn thuần
object Hello {
val MAX_LEN = 1 + 1
}
nếu các thuộc tính là hằng số thời gian biên dịch, hãy thêm một consttừ khóa
object Hello {
const val MAX_LEN = 20
}
nếu bạn muốn sử dụng nó trong Java, hãy thêm @JvmStaticchú thích
object Hello {
@JvmStatic val MAX_LEN = 20
}
Cho tôi
object Hello {
const val MAX_LEN = 20
}
là để nồi hơi nhiều. Tôi đơn giản đặt các trường cuối cùng tĩnh bên trên lớp của tôi như thế này
val MIN_LENGTH = 10
class MyService{
}
private), định nghĩa này là ngắn gọn nhất.