-1
我試圖用「KUROONN」方法克隆Test2的對象。我期望輸出的第二行讀取[0,0],但實際結果顯示[33,4]。我不知道爲什麼會發生這種情況,任何人都可以解釋這一點嗎?JAVA沒有克隆好
import java.util.ArrayList;
class Test {
public static ArrayList<Integer> T=new ArrayList<Integer>();
}
class Test2 {
int Test2Int;
ArrayList<Integer> Test2List;
public Test2(int K,ArrayList<Integer> A) {
this.Test2Int=K;
this.Test2List=A;
}
public Test2 KUROONN() { //broken clone
Test2 b=new Test2(0,Test.T);
b.Test2Int=this.Test2Int;
System.out.println(b.Test2List);
for(int i=0;i<this.Test2List.size();i++) {
b.Test2List.add(this.Test2List.get(i));
}
return b;
}
}
public class testtube001a {
public static void main (String args[]){
ArrayList<Integer> n =new ArrayList<Integer>();
n.add(33);
n.add(4);
ArrayList<Integer> m =new ArrayList<Integer>();
m.add(114);
m.add(514);
Test2 t2_1=new Test2(72,n);
Test2 t2_2=new Test2(1919,m);
t2_1.KUROONN();
t2_2.KUROONN();
}
}
的程序的輸出是:
[]
[33, 4]
你爲什麼期望輸出[0,0]?就我所見,你從未設置過。另外請不要使用Test,Test2作爲類名,然後命名變量Test2Int。儘管代碼相對簡單,但它很難理解。並且是類Test中的ArrayList是否爲特定原因的靜態?因爲如果不是,我會先刪除那件事。 –
對不起,我的錯誤。我的意思是我期望[]。而這段代碼應該只是一個我正在做的更大代碼的調試測試,所以我只是使用測試名稱。很抱歉。 –