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