java中不可变对象(immutable object)是什么,有什么意义

不可变对象顾名思义不可改变的对象

一旦构造器完成执行,该实例即无法改变

 

意味着可以传递对象的引用,不用担心改变其内容,特别是在处理并行时,不可变对象不存在锁的问题,易于构造使用

 

final class ImmutableClass {
	final String str;
	final int value;
    final int[] ints;
	
	public ImmutableClass(final String str, final int value) {
		this.str = str;
		this.value = value;
	}
	
	public String getStr() {
		return str;
	}
	
	public int getValue() {
		return value;
	}
}

 

1.使用final修饰类

保证类不可继承,保证其不变性

 

2.使用final修饰类属性

防止外部改变其属性,破坏不变性

 

3.类中包含类引用时,应使用深拷贝

public ImmutableClass(int[] ints) {
    this.ints = ints;
}

当直接通过构造器初始化类内部对象时,可通过外部对象的改变从而破坏类的内部状态,破坏其不变形

public ImmutableClass(int[] ints) {
    this.ints = ints.clone();
}

通过深度拷贝,保证状态的不变性

 

你可能感兴趣的:(Java,Immutable)