Java의 전체 복사, 얕은 복사 및 복제
Java에서 객체를 조작할 때는 복사 의미의 미묘한 차이를 이해하는 것이 중요합니다. 전체 복사, 얕은 복사 및 복제는 객체 복제에 대한 다양한 접근 방식을 설명하는 데 일반적으로 사용되는 용어입니다.
얕은 복사
얕은 복사는 객체의 가장 바깥쪽 수준을 복제합니다. . 새 개체에는 별도의 필드가 있지만 해당 필드 내에 포함된 모든 참조는 원본 개체와 공유됩니다.
예:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, eg1.bar);</code>
이 얕은 복사본에서는 eg2 새로운 foo가 있고 eg1과 동일한 bar 배열에 대한 참조가 있습니다.
Deep Copy
Deep Copy는 객체의 여러 수준을 탐색하여 중첩된 모든 객체의 새 복사본을 생성합니다. 사물. 새 객체는 원본과 완전히 독립적입니다.
예:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, Arrays.copy(eg1.bar));</code>
이 딥 카피에서 eg2에는 새로운 foo와 새로운 배열 막대가 있습니다. eg1에 있는 것의 복사본입니다.
Clone
모든 객체와 배열에 대해 존재하는 clone 메소드는 복사본을 생성하기 위한 것입니다. 그러나 해당 동작은 표준화되지 않았습니다.
결론
객체 간의 완전한 독립이 필요한 경우 심층 복사를 권장합니다. 얕은 복사는 객체 참조가 충분할 때 적합합니다. 복제 방법의 동작은 일관되지 않으므로 주의해서 사용해야 합니다.
위 내용은 딥 카피, 얕은 카피, 클론: 어떤 Java 복사 메커니즘을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!