Kotlin 面试题
目录

Kotlin 中如何自定义属性的 getter 和 setter?

· 约 3 分钟读完 · 第 66 / 200 章

推荐答案

在 Kotlin 中,你可以通过自定义属性的 getter 和 setter 来控制属性的访问和修改行为。以下是一个示例代码:

在这个示例中,name 属性的 getter 和 setter 被自定义。每次访问 name 属性时,getter 会被调用,并打印一条消息。每次修改 name 属性时,setter 会被调用,并打印一条消息。

本题详细解读

自定义 Getter

在 Kotlin 中,属性的 getter 可以通过 get() 方法来定义。get() 方法会在每次访问该属性时被调用。你可以在 get() 方法中添加自定义逻辑,比如日志记录、数据验证等。

在这个例子中,isAdult 是一个只读属性,它的值是通过 get() 方法动态计算的。

自定义 Setter

属性的 setter 可以通过 set(value) 方法来定义。set(value) 方法会在每次修改该属性时被调用。你可以在 set(value) 方法中添加自定义逻辑,比如数据验证、触发事件等。

在这个例子中,age 属性的 setter 会检查传入的值是否合法。如果值小于 0,则会打印一条错误消息,并且不会修改 age 的值。

使用 field 关键字

在自定义 getter 和 setter 时,你可以使用 field 关键字来访问属性的实际值。field 相当于 Java 中的 this.field,它代表了属性的存储字段。

在这个例子中,field 用于存储 counter 属性的实际值。

注意事项

  • 如果你只定义了 getter,那么该属性将是只读的。
  • 如果你定义了 setter,那么该属性必须是可变的(即使用 var 声明)。
  • 在 getter 和 setter 中,你可以访问其他属性或方法,但要避免无限递归调用。

通过这些方式,你可以在 Kotlin 中灵活地控制属性的访问和修改行为。