扫码关注官方订阅号
学习是最好的投资!
final class ImmutableClass { private final Date date; public ImmutableClass(Date date) { this.date = date; } public Date getDate() { return date; } }
该类是final的,成员是final的,但是成员date依旧可改变:
ImmutableClass ic = new ImmutableClass(new Date()); System.out.println(ic.getDate()); //Sun Dec 13 11:59:09 CST 2015 ic.getDate().setTime(123); System.out.println(ic.getDate()); //Thu Jan 01 08:00:00 CST 1970
第一点对象创建之后其状态就不可改变可以理解为对象在创建之后就不能发生改变,任何对它的改变都应该产生一个新的对象。
对象创建之后其状态就不可改变
对象在创建之后就不能发生改变,任何对它的改变都应该产生一个新的对象
如果想对ImmutableClass里实现不可变对象,那只要修改getDate()方法,使其返回date的克隆。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
该类是final的,成员是final的,但是成员date依旧可改变:
第一点
对象创建之后其状态就不可改变可以理解为对象在创建之后就不能发生改变,任何对它的改变都应该产生一个新的对象。如果想对ImmutableClass里实现不可变对象,那只要修改getDate()方法,使其返回date的克隆。