本文讨论一下在Scala语言里,字段(Fields)是如何实现的
字段实际上是getter/setter方法
在Scala里,字段是通过var或val关键字来定义的。var字段是可读写的,val字段是只读的。下面是一个简单的例子:
class MyObj {
var intVar = 1
val strVal = "str"
}
反编译之后,可以得到下面的Java代码:
public class MyObj {
private int intVar = 1;
private final String strVal = "str";
public int intVar() {return intVar;}
public void intVar_$eq(int intVar) {this.intVar = intVar;}
public String strVal() {return strVal;}
}
可见:
- 对于var字段,Scala编译器会生成相应的Java字段和一对儿getter/setter方法
- 对于val字段,编译器会生成final字段和getter方法
- getter方法和字段同名
- setter方法为:字段名_$eq
抽象字段
因为字段实际上就是getter/setter方法,所