在 Kotlin 中,如果想实现一个类的属性可以从外部读取但不能修改,可以使用自定义的 getter 和 private setter。以下是一个示例代码:
class MyClass {
var myProperty: String
private set // 使 setter 私有化,外部无法修改
get // 默认 getter
constructor(initialValue: String) {
myProperty = initialValue
}
}
fun main() {
val myObject = MyClass("Initial Value")
println(myObject.myProperty) // 可以读取属性a
// myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}
在这个示例中,myProperty 的 getter 是公共的,因此可以从类的外部读取该属性。但是,setter 是私有的,因此无法从外部修改该属性。
如果需要进一步自定义 getter 或 setter,也可以这样做:
class MyClass {
var myProperty: String
private set(value) {
field = value // 自定义 setter
}
get() = field // 自定义 getter
constructor(initialValue: String) {
myProperty = initialValue
}
}
fun main() {
val myObject = MyClass("Initial Value")
println(myObject.myProperty) // 可以读取属性
// myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}