一个简单的类A:
@Data
public class A {
private Date time;
}
现在为类A中的time属性赋值,测试代码如下:
public static void main(String[] args) {
A a = new A();
Date date = new Date();
a.setTime(date);
System.out.println(a.getTime());
date.setTime(6);
System.out.println(a.getTime());
}
测试结果:
可以发现一旦data变量被修改后,就会影响到原来赋给变量A的time属性值。这明显是有问题的。
解决方法
修改下取时间的方式,如下:
public static void main(String[] args) {
A a = new A();
Calendar date = Calendar.getInstance();
a.setTime(date.getTime());
System.out.println(a.getTime());
date.set(Calendar.YEAR, 6);
System.out.println(date.getTime());
System.out.println(a.getTime());
}
测试结果:
可以发现此时即使data变量被修改,也不会影响到原来赋给变量A的time属性值。