博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注意不要编写返回引用可变对象的访问器方法
阅读量:5375 次
发布时间:2019-06-15

本文共 746 字,大约阅读时间需要 2 分钟。

1 class Employee{2     private Date hireDay;3     //其他4     public Date getHireDay() {5         return hireDay;//不好的写法6     }7 }

执行如下代码:

Employee harry = new Employee();        harry.setHireDay("2010-10");        Date date = harry.getHireDay();//返回雇佣日期,类型为Date.        System.out.println(date.getTime());        double ten = 10*365.25*24*60*60*1000;        date.setTime(date.getTime() - (long)ten);        System.out.println(harry.getHireDay().getTime());//此时我们会发现harry的hireDay被改变了

也许大部分初学者都会这样写,我也一样,认为没有毛病,但是,结果不尽人意!画图可知why。 

示意图如下

所以我们不要编写返回引用可变对象的访问器方法。

解决方法:
clone();

 

public Date getHireDay() {        return (Date)hireDay.clone();//使用clone,返回一个副本    }

 

这样无论如何改变date也不会影响harry中的hireDay了。

转载于:https://www.cnblogs.com/llawliet0001/p/9999973.html

你可能感兴趣的文章
在CentOS7上安装RabbitMQ
查看>>
缓存与内存的区别
查看>>
doDBA 监控用法
查看>>
autowire异常的三个情况
查看>>
Windows 系统变量大全
查看>>
这是我的第一个随笔
查看>>
[poj] 3180 the cow prom
查看>>
Yarn 包管理工具
查看>>
[bzoj1305][CQOI2009]dance跳舞
查看>>
js对象的复制,传递,新增,删除和比较
查看>>
android EditText
查看>>
为什么要拒绝使用大事务进行处理任务?
查看>>
云技术入门指导:什么是云计算技术,云技术用什么语言开发
查看>>
linux/windows转mac的习惯设置
查看>>
第三课响应式布局
查看>>
I2C
查看>>
LeetCode - Remove Duplicates from Sorted Array
查看>>
微软BI 之SSIS 系列 - 带有 Header 和 Trailer 的不规则的平面文件输出处理技巧
查看>>
数据库学习笔记(基础语句总结)
查看>>
KMP算法
查看>>