class X
{
String x1;
String x2;
//...
String x15;
public X (Other o)
{
// initialize x1,x2,...,x15
}
String getx1 () { return x1; } // lot of getters
String getx2 () { return x2; }
//...
String getx15 () { return x15; }
}
class X
的对象在 class Other
的构造函数中初始化;
class Other
{
private X obj;
// Other members
public Other ()
{
obj = new X(this);
//...
}
//...
}
我想以某种方式摆脱class X
中的许多getter
方法。我可以简单地删除这些并将 X
的所有数据成员置于 default
范围内(X
仅在包内使用)。
有什么方法可以在调用构造函数 Other
后使 X obj
的成员不可变吗?这里的想法是,当使用get()
方法时,X
内部的变量不能被修改。
obj.getx1();
现在,如果我简单地使用 obj.x1
那么它可能会被覆盖(或者至少在代码审查中,它会被反对)。
[注意:obj
必须仅在 Other()
构造函数中初始化]。
最佳答案
如果将成员变量声明为final
,那么它们在构造函数之后是不可变的。
关于java - 一旦调用构造函数,我可以使对象不可变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451794/