"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();
}
}
이 프로그램의 출력은 다음과 같습니다
public static ArrayList<Integer> T=new ArrayList<Integer>();
단어 static
변수는 모든 인스턴스간에 공유되는 의미 :
[]
[33, 4]
출력 [0,0]을 (를) 왜 기대 하시겠습니까? 당신은 내가 보는 한 그것을 결코 정하지 않았습니다. 게다가 Test, Test2를 클래스 이름으로 사용하지 말고 Test2Int 변수의 이름을 지정하십시오. 코드가 상대적으로 단순하더라도 이해하기가 어렵습니다. 그리고 특정 이유로 Test 클래스의 ArrayList가 정적입니까? 왜냐하면 내가 그 일을 먼저 제거 할 것이기 때문입니다. –
실수로 죄송합니다. 나는 내가 [[]를 기대한다는 것을 의미했다. 그리고이 코드는 내가 만든 더 큰 코드에 대한 디버깅 테스트 일 뿐이므로 방금 이름 테스트를 사용했습니다. 매우 죄송합니다. –