-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是否为特定原因的静态?因为如果不是,我会先删除那件事。 –
对不起,我的错误。我的意思是我期望[]。而这段代码应该只是一个我正在做的更大代码的调试测试,所以我只是使用测试名称。很抱歉。 –