在《Effective Java》中,Bloch建议使对象不可变时将所有字段设为final。这样做是必要的吗?只是不提供访问器方法就可以使其不可变吗?例如:
上述类是不可变的,即使我没有将
class A {
private int x;
A (int x) {
this.x = x;
}
}
上述类是不可变的,即使我没有将
x
声明为 final
,对吗?我有什么遗漏吗?
getX()
)是可以的,问题在于“变异器”方法(例如setX()
)。 - Grundlefleck