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();
}

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值