나는 내 자신의 ArrayList로 자바에서 복제에 대해 곧바로 생각하고있다. 내가 뭔가 잘못하고 또는 왜 Arrays.copyOf()를 사용 있습니까이 코드를ArrayList의 clone() 메소드, 왜 Arrays.copyOf()입니까?
@Override
public Object clone() {
try {
MyArrayList<E> v = (MyArrayList<E>) super.clone();
v.elementData = Arrays.copyOf(elementData, size);
return v;
} catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
를 보는 것을 들어
는
@Override
public Object clone() {
try {
return (MyArrayList<E>) super.clone();
} catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
같은 결과를 제공?
'MyArrayList'와 관련하여'elementData' 란 무엇입니까? "딥 카피"를하려고하십니까? – vikingsteve
"깊은"복사본과 "얕은"복사본의 차이를 이해하지 못한다고 고백해야합니다. elementData는 ArrayList의 요소 데이터입니다. 첫 번째 코드는 ArrayList 소스 코드에서 가져옵니다. Arrays.copyOf()가 두 번째 코드 예제에서 동일한 결과를 얻는 이유는 무엇입니까? 이는 두 가지 copys가 모든 데이터를 얻음을 의미합니다. –
첫 번째 목록의 배열에서 일부 요소를 수정하고 두 번째 목록의 배열에있는 요소가이를 반영하는지 확인한 다음 이해하십시오. – vikingsteve