不可变类

什么是不可变类

不可变对象(Immutable Objects)即对象一旦被创建它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。
不可变对象的类即为不可变类。Java类库中有很多不可变类例如String,基本类的包装类BigInteger等。

如何构造一个不可变类

1、确保类不能被继承-将类声明为final,或使用静态工厂并将构造器声明为private。
2、声明属性为private 和 final 。
3、不要提供任何可以修改对象状态的方法 - 不仅仅是set方法, 还有任何其它可以改变状态的方法 。
4、如果类有任何可变对象属性, 那么当它们在类和类的调用者间传递的时候必须被保护性拷贝
示例:

final class A{
 private String name;
 private B id;
 public A(B b,String name){
 this.name=name;
 this.id= new B(b);//创建b的私有拷贝,这是保持id为private的唯一方式。
 {
 public B getId(){
  return new B(id);
  }
  public String getName(){
  return this.name;
  }
  public void setName(String name){
  this.name=name;
  }
}

posted on 2019-02-28 18:55  jrz  阅读(92)  评论(0编辑  收藏  举报

导航