duoxiancheng
保护性拷贝(defensive copy)
package com.starfuxks; import java.util.Date; public class PseudoDefensiveCopyClass { private Date date; public PseudoDefensiveCopyClass(Date date) { this.date = date; } public Date getDate() { return date; } }
表面上看,这个类的private变量无法被修改。但实际上是错误的,getDate反悔了关于date的引用,然后获得引用后可以直接修改date的值。所以要让date无法被修改,最简单的方法
package com.starfuxks;
import java.util.Date;
public class PseudoDefensiveCopyClass {
private Date date;
public PseudoDefensiveCopyClass(Date date) {
this.date = date;
}
public Date getDate() {
return new Date(date);
}
}
浙公网安备 33010602011771号