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 val
trong 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 object
bên trong một lớp
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
nếu Hello
là 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 const
từ 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 @JvmStatic
chú 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.