在Kotlin中,field
关键字是一个特殊的标识符,用于在属性的自定义getter和setter中访问backing field(存储属性值的实际字段)。Kotlin属性默认提供getter和setter方法,但当你需要自定义它们的行为时,可以使用field
关键字来访问和修改属性的实际值。
默认的 Getter 和 Setter
Kotlin默认生成的getter和setter非常简单:
-
默认的 Getter:返回
field
的值。val property: Type get() = field
-
默认的 Setter:将传入的值赋给
field
。var property: Type set(value) { field = value }
自定义 Getter 和 Setter 示例
以下是一个示例,展示如何使用field
关键字来自定义getter和setter:
class User {
var name: String = "default"
get() = field.uppercase() // 自定义 getter
set(value) {
field = value.trim() // 自定义 setter
}
}
fun main() {
val user = User()
user.name = " John Doe "
println(user.name) // 输出 "JOHN DOE"
}
在这个示例中,name
属性有一个自定义的getter和setter。getter将field
的值转换为大写,而setter将传入的值去掉首尾空格,然后赋值给field
。
注意事项
field
关键字只能在自定义的getter和setter中使用。- 如果不提供自定义的getter或setter,Kotlin会自动生成默认的getter和setter。
- 对于
val
属性(只读属性),只有getter方法,没有setter方法。 - 对于
var
属性(可变属性),同时生成getter和setter方法。
示例
class User {
var name: String = "default" // 默认的getter和setter
}
fun main() {
val user = User()
user.name = "John Doe"
println(user.name) // 输出 "John Doe"
}
这个示例中没有自定义getter和setter,因此Kotlin使用默认的getter和setter方法。
联系我