duoxiancheng

保护性拷贝(defensive copy)

duoxiancheng
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;
    }
}
duoxiancheng

表面上看,这个类的private变量无法被修改。但实际上是错误的,getDate反悔了关于date的引用,然后获得引用后可以直接修改date的值。所以要让date无法被修改,最简单的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
    }
}

  

duoxiancheng

上一篇:Eclipse vim插件安装使用


下一篇:kotlin 将url转为MultipartFile类型