如何保证一个类中的实例变量不被改变

Posted lonecloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保证一个类中的实例变量不被改变相关的知识,希望对你有一定的参考价值。

 

如题,如果在一个对象中的实例属性不能被改变,需要设置成不可变量的时候采用如下方法:
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();//保护性复制数据
    }
}

 

以上是关于如何保证一个类中的实例变量不被改变的主要内容,如果未能解决你的问题,请参考以下文章

如何将 View 类中的代码片段移动到 OnAppearing() 方法?

每次调用 Firebase Analytic 的 getInstance() 与将实例存储为 Application 类中的静态变量

嵌套类:如何访问封闭类中的成员变量

Python类中self的作用

设计模式整理_模板模式

将实例变量作为参数传递给同一类中的方法?