不要编写返回引用可变对象的访问器方法--------------------要怎么理解呢
import java.util.Date;
import java.util.GregorianCalendar;
public class Employee {
private String name;
private double salary;
private Date hireDay;
public Employee(String n,double s,int year,int month,int day ){
name = n;
salary = s;
GregorianCalendar calendar= new GregorianCalendar(year,month-1,day);
hireDay=calendar.getTime();
}
public void raiseSalary (double byPercent){
double raise = salary*byPercent/100;
salary += raise;
}
public Date getHireDay() {
return (Date)hireDay.clone();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
}
import java.util.Date;
public class EmployeeTest {
public static void main(String[] args) {
Employee [] staff =new Employee [3];
staff [0]= new Employee("Carl Cracker", 75000, 1987, 12, 15);
staff [1]= new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff [2]= new Employee("Tony Tester", 40000, 1990, 3, 15);
for(Employee e:staff)
e.raiseSalary(5);
for(Employee e:staff)
System.out.println("name="+e.getName()+",salary="+e.getSalary()
+",hireDay="+e.getHireDay());
Employee harry=new Employee("harry",50000,1989,10,1);
Date d=harry.getHireDay();
double tenYearsInMilliSeconds=10*365.25*24*60*60*1000;
d.setTime(d.getTime()-(long)tenYearsInMilliSeconds);
//d.setYear(2000);
System.out.println("name="+harry.getName()+",salary="+harry.getSalary()
+",hireDay="+harry.getHireDay());
}
}
为啥hireDay的值没有变化,不应该是变么?怎么设置d的值才能让hireDay的值变么
------解决方案--------------------public Date getHireDay() {
return (Date)hireDay.clone();
}
这应该是问题