getter和setter
在介绍底层原理之前,我们要先了解getter
和setter
,这两者其实是一种类型的东西,为了行文方便,下文只说明getter
。所谓的getter
,其实就是对外界隐藏属性本身,然后通过一个名为get***
的函数让外界对属性进行访问(修改),对于布尔类型,其getter
一般采用is***
的命名规则,setter
和普通类型一样使用get***
。
在Java中书写的getter
长这样:
public class Simple {
private int tmp = 0;
//getter
public int getTmp() {
return tmp;
}
//setter
public void setTmp(int tmp) {
this.tmp = tmp;
}
}
那么对于KT,其getter
是什么样子的呢?非常简单:
class Simple {
var tmp: Int = 0
}
为了照顾对于KT不熟悉的同学,我们再简单说明一下。KT中会自动为var
属性编写getter
和setter
,为val
属性编写getter
。如果我们将上面的代码反编译为Java就能发现其中的原理:
public final class Simple {
private int tmp;
public final int getTmp() {
return this.tmp;
}
public final void setTmp(int var1)