Java 之不小心修改对象值
Posted auspice
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 之不小心修改对象值相关的知识,希望对你有一定的参考价值。
Java 创建对象是一个映射的过程,类似于C中的指针,在堆中new 一块空间,再将变量名对应至那个空间。
String a = new String("空间");
String b = a;
a和b指向同一块区域String (“空间”)。
String是不能修改静态域final,一旦初始化就不能修改。
String还好,但这个在类中要特别注意。
一定一定不要写返回引用可变对象的访问器方法。
class Employee
private Date hireDay;
...
public Date getHireDay()
//return hireDay;//错误
return (Date) hireDay.clone();//正确,返回一个复制的新对象
Date date = employee.getHireDay();//employee 是Employee的一个实例
修改date也能同时修改employee中的hireDay,因为他们引用同一个Date对象。
再如下面例子:
public static void tripleSalary(Employee x)
x.raiseSalary(200);
调用
harry = new Employ(...);
tripleSalary(harry);
以上是关于Java 之不小心修改对象值的主要内容,如果未能解决你的问题,请参考以下文章
java反射反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更