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 老项目迁移系列,持续更新中。

相关推荐
snow@li7 分钟前
Java:后端项目会有一个类似前端node_modules的目录吗 / jar包在本地仓库 ~/.m2/repository 中按版本共存
java·开发语言·前端
济*沧*海9 分钟前
创建springboot项目时会出现注释乱码情况
java·spring boot·后端
geovindu10 分钟前
java: Builder Pattern
java·开发语言·后端·设计模式·建造者模式·生成器模式
卓怡学长13 分钟前
w268基于springboot + vue 物流系统
java·数据库·vue.js·spring boot·spring·intellij-idea
REDcker18 分钟前
Android 15 16KB 内存页适配详解
android·开发语言·python
Kapaseker25 分钟前
Android 开放这扇门,正在被 Google 从里面反锁
android·kotlin
帅次37 分钟前
Android 高级工程师面试:网络与数据层 近1年高频追问 18 题
android·网络·okhttp·面试·retrofit·gilde
.Cnn42 分钟前
Redis基础day02
java·数据库·redis
能有时光43 分钟前
[MAF的Agent管道详解-07]利用AIAgent中间件构建Agent管道
java·数据库
什巳1 小时前
JAVA练习277- 找到字符串中所有字母异位
java·开发语言·算法·leetcode