返回值不要是引用可变对象,而是该对象的克隆

如:

public java.util.Date getHireDay() 
{
		return (java.util.Date)this.hireDay;
		
}

在main中:

public static void main(String[] args) {
		// TODO Auto-generated method stub

		Employee test = new Employee("aaaa", 23.23,2000,11,23);
		System.out.println("Before:" + test.getHireDay().toString());
		java.util.Date hireday = test.getHireDay();
		hireday.setYear(2001);
		System.out.println("After:" + test.getHireDay().toString());

	}

执行后:

Before:Thu Nov 23 00:00:00 CST 2000
After:Sat Nov 23 00:00:00 CST 3901

修改getHireDay后:

	public java.util.Date getHireDay() {
		return (java.util.Date)this.hireDay.clone();
		
	}


执行后:

Before:Thu Nov 23 00:00:00 CST 2000
After:Thu Nov 23 00:00:00 CST 2000


通过上面的例子说明,main中的hireday和test的hireday是同一个对象,改变main中的hireday也可以改变test的hireday。


你可能感兴趣的:(返回值不要是引用可变对象,而是该对象的克隆)