新手寻求帮助,类封装的问题,如果类具有指向可变对象的域... harry.GetHireDay(); 返回一个Date型的引用,然后把它赋给d.他们之间有一个改变了其中的内容,那么另一个吊用时他的内容就是已改变过的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 vgvg说得对,d是对类实例harry中的属性hireDay的引用,当用户对d进行写操作时,就会改变hireDay的值,这种改变不是通过类提供的接口方法实现的,所以说它破坏了封装。我在实际使用中一般使用对象克隆来防止出现这种现象,不知vgvg有什么更好方法?import java.util.Date;public class Employee {public Object getHireDay(){return hireDay.clone();}private String name;private double salary;private Date hireDay = new Date();public static void main(String [] args){ Employee harry = new Employee(); Date d = (Date)harry.getHireDay(); System.out.println("操作前hireDay的值:" + d); System.out.println("操作前d的值:" + d); double TenYears = 10*365.25*24*60*60*1000; d.setTime(d.getTime() - (long)TenYears); System.out.println("操作后hireDay的值:" + (Date)harry.getHireDay()); System.out.println("操作后d的值:" + d);}} 泛型通配符问题 关于java浮点型操作报空置针异常 很急的问题 怎样倒金字塔递归列出指定文件的树状目录结构 关于js的document.write() web.xml问题!!! java中如何调用控件,急,另外,如何调用本地应用程序,如word 用JAVA开发 中国式报表,请大家给点意见 Java SE 小问题 求大神帮助,关于线程的问题 正则表达该怎么写,100分 请教:一个jav程序为何编译时出现这种情况?
import java.util.Date;public class Employee
{
public Object getHireDay()
{
return hireDay.clone();
}
private String name;
private double salary;
private Date hireDay = new Date();public static void main(String [] args){
Employee harry = new Employee();
Date d = (Date)harry.getHireDay();
System.out.println("操作前hireDay的值:" + d);
System.out.println("操作前d的值:" + d);
double TenYears = 10*365.25*24*60*60*1000;
d.setTime(d.getTime() - (long)TenYears);
System.out.println("操作后hireDay的值:" + (Date)harry.getHireDay());
System.out.println("操作后d的值:" + d);
}
}