在Java中实现Immutable类

时间:2016-09-06 19:53:18

标签: java immutability

在我的应用程序中,我需要使我的类成为不可变的,但在我的课堂上我有一个其他类的对象是可变的,有人可以建议我实现。

伪代码:

我想作为不可变类

的类A
class A {
    /* ... */ 

    //class B is mutable
    B b = new B();
    /* ... */ 
}

1 个答案:

答案 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