getter/setter → Kotlin 属性

getter/setter → Kotlin 属性

老写法(Java)

java 复制代码
public class User {
    private String name;
    private int age;

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

// 使用
user.setName("张三");
String name = user.getName();

新写法(Kotlin)

kotlin 复制代码
class User {
    var name: String = ""
    var age: Int = 0
}

// 使用
user.name = "张三"
val name = user.name

一句话注意

Kotlin 里声明 var 自动生成 getter/setter(val 只生成 getter)。直接通过 .name 访问,底层调用的是自动生成的 getName()/setName(),和 Java 的 getter/setter 对完全相同。所以 Retrofit 等框架用同样的方式解析字段名,不会出问题。

自定义 getter/setter 也支持:

kotlin 复制代码
var displayName: String = ""
    get() = if (field.isEmpty()) "未命名" else field
    set(value) { field = value.trim() }

field 是背后的实际存储字段,只在 getter/setter 中可见。


Java Android 老项目迁移系列,持续更新中。

相关推荐
糖拌西瓜皮1 小时前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
Junerver1 小时前
我写了一个 Compose Multiplatform 组件库,你可能会用到
kotlin·android jetpack
一线大码2 小时前
Smart-Doc 的简单使用
java·后端·restful
YXL1111YXL3 小时前
Handler 消息回收与协程异步执行的时序陷阱
android
MacroZheng3 小时前
Claude Code官方桌面端正式发布,夯爆了!
java·人工智能·后端
虚无境3 小时前
如何编写一个SpringBoot项目告警推送的Starter
java·prometheus·webhook
恋猫de小郭3 小时前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
三少爷的鞋4 小时前
Android 协程并发控制:别动线程池,控制好并发语义就够了
android