我正在将一个java Pojo实例变量设置为'val'和amp;在初始化之后改变它的状态。这会引起任何问题,因为它真的是'var'吗?
val st = new Pojo();
st.setInt(0);
答案 0 :(得分:9)
它仍然是val
。无法更改引用,但引用的对象可以使其内部状态发生变异。
val
表示您无法进行此重新分配:
val st = new Pojo()
st = new Pojo() // invalid!
为此,您需要var
:
var st = new Pojo()
st = new Pojo() // ok
答案 1 :(得分:3)
它不是var
。再次尝试st=new Pojo()
,您将看到无法将新值重新分配给st(编译器会抱怨error: reassignment to val
)。
val
不会授予“深层”不变性,只是初始设置的值(它只是对可以变为可变对象的引用)不能更改为新的引用。