Kotlin 有区别于 Java 的 back field 的概念。用过 Kotlin 的人都知道,Kotlin 的属性是天生带 Setter/Getter 方法的,不过如果要重写他们的话,写法有所不同。
var a: String = "1"
get() = field
set(value) {
field = value
}
复制代码
我们可以看到,当需要重写 Setter/Getter 方法的时候,就需要用到 field 这个新概念,它其实是代表这个域本身。有些人刚开始看到这个东西的时候,可能会觉得很神秘,其实它里面的实现逻辑很简单,就是对应到 Java 中 Setter/Getter 方法,然后 field 在 Java 的方法中就是该属性本身,上面的代码编译后的代码:
@NotNull
private String a = "1";
@NotNull
public final String getA() {
return this.a;
}
public final void setA(@NotNull String value) {
Intrinsics.checkParameterIsNotNull(value, "value");
this.a = value;
}复制代码
转换成Java后很容易理解field的作用