在我的应用程序中,我需要使我的类成为不可变的,但在我的课堂上我有一个其他类的对象是可变的,有人可以建议我实现。
伪代码:
我想作为不可变类
的类A
class A {
/* ... */
//class B is mutable
B b = new B();
/* ... */
}
答案 0 :(得分:2)
假设您需要从外部世界访问b
,您需要将所有方法包装在B上并在A
中声明这些方法。
另外,将b
作为构造函数参数,不使用getter / setter方法。
class A{
private final b;
A(B b){
this.b = b;
}
public String getSomeValue(){
return b.getSomeValue();
}
}
编辑:参考Hoopje'关于在构造函数中克隆b
的评论。如果clone
上没有B
或复制构造函数,那么您必须在B
A