由於日期是在Java可變的,他們的getter setter方法直接優選的可變性與Java的getter和setter日期
public void setDate(Date date){
this.date = date;
}
public Date getDate(){
return this.date;
}
所以我寫了一篇關於Ideone代碼來驗證這一點,
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private class Test{
private Date date;
public void setDate(Date date){
this.date = date;
}
public Date getDate(){
return this.date;
}
}
public static void main (String[] args) throws java.lang.Exception
{
Ideone abc = new Ideone();
abc.functionTest();
}
public void functionTest(){
Date tempDate = new Date(1403685556000L);
Test test = new Test();
test.setDate(tempDate);
tempDate = new Date(1435221556000L);
Date abc = test.getDate();
Long def = abc.getTime();
System.out.println("Date 1:"+def.toString());
test.setDate(tempDate);
def = abc.getTime();
System.out.println("Date 2:"+def.toString());
}
}
我得到了以下結果作爲輸出
Date 1:1403685556000
Date 2:1403685556000
這些都是原來的日期,而不是改變一個。 這是結果與Java中的Date對象的Mutability的預期相反。
爲什麼我得到這個意想不到的行爲?
這裏是Ideone Code
這裏有什麼問題嗎? – Keppil
你的問題是什麼? – lpratlong
是的,爲什麼我得到這個意外的行爲 – Dheerendra