effective java 学习总结

来源:互联网 发布:迈达斯软件正版多少钱 编辑:程序博客网 时间:2024/06/05 03:32

1.  非可变类  ,如何设计一个非可变类 

一个非可变类是一个简单的类 它的实例不可以修改

String  基本类型的包装器  BigInteger

 

实现方案

 

不提供任何修改对象的方法

 

所有域设final的

 

保证没有可被子类改写的方法

 

所有域设置为私有(保证域不会被修改  其实保证 域也是 非可变类也是可以的 但是不推荐)

 

如果该类有指向可变对象的域 那么该必须保证客户无法获得指向该域的引用 ,切不可以用用户提供的参数来初始化只, 不可在任何访问方法返回此对象,在构造函数 访问方法,readObject 使用保护性拷贝。

 

 

非可变对象可以被自由共享

 

 

2.  保护性拷贝

public class Period{private Date start;private Date end;public Period(Date start,Date end){  this.start=new Date(start.getTime());this.end=new Date(end.getTime());}}

怕的是传入构造函数的引用被不好的人拿到。

原创粉丝点击