如何保證一個類中的例項變數不被改變

lonecloud發表於2018-01-22

 

如題,如果在一個物件中的例項屬性不能被改變,需要設定成不可變數的時候採用如下方法:
1.將類定義成final型別

2.將例項變數定義成final型別

3.將例項變數的set方法去除

4.將在構造方法中克隆一份資料設定給例項變數

5.將在get方法中將例項變數克隆一份賦值返回給使用者

public final class Demo{
    private final Date start;
    private final Date end;
    
    public Demo(Date start,Date end){
        this.start=new Date(start.getTime());//重新建立備份
        this.end=new Date(end.getTime());//重新建立備份
    }
    public Date getStart(){
        return (Date) start.clone();//保護性複製資料
    }
    public Date getEnd(){
        return (Date) end.clone();//保護性複製資料
    }
}

 

相關文章