이 글은 주로 Java에서 clone() 사용에 대한 정보를 소개합니다. 이 글이 모든 사람이 clone() 복제 방법을 익히는 데 도움이 되기를 바랍니다. java 메소드
서문:
clone이 복사 중입니다. Java 언어에서는 객체에 의해 clone 메소드가 호출되므로 객체가 복사됩니다. 객체를 복사하려면 먼저 원본 객체와 동일한 크기의 공간을 할당하고 이 공간에 새 객체를 생성해야 합니다. 따라서 Java 언어에는 다음이 있습니다.
1 new 연산자를 사용하여 개체 만들기
2 clone 메서드를 사용하여 개체 복사
이 두 방법의 유사점과 차이점은 무엇입니까? new 연산자의 원래 의도는 메모리를 할당하는 것입니다. 프로그램이 new 연산자를 실행할 때 먼저 new 연산자 뒤에 있는 유형을 살펴봅니다. 왜냐하면 유형을 알아야만 할당할 메모리 공간을 알 수 있기 때문입니다. 메모리를 할당한 후 생성자를 호출하여 객체의 각 필드를 채우는 이 단계를 객체 초기화라고 합니다. 생성자가 반환된 후 객체의 참조(주소)가 외부에 게시될 수 있습니다. 이 참조는 개체를 조작합니다. clone의 첫 번째 단계는 new와 유사하며, clone 메소드가 호출될 때 할당된 메모리는 소스 객체(즉, clone 메소드를 호출하는 객체)와 동일하며, 그 다음에는 새 객체의 필드가 채워진 후 clone 메서드가 반환되고 동일한 새 객체가 생성되며 이 새 객체의 참조도 외부에 게시할 수 있습니다.
package test; public class Cloneoo { public static void main(String[] args) { test t=new test(); t.changeInt(); System.out.println(t); try { test t1=(test) t.clone();//创建 System.out.println(t1); System.out.println(t1.getI()); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class test implements Cloneable{ private int i=0; public void setI(int i) { this.i = i; } public int getI() { return i; } public void changeInt(){ this.i=1; } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub test t=null; t=(test) super.clone(); return t; } }
test.test@15db9742 test.test@6d06d69c 1
클래스에 일부 개체가 포함되어 있으면 깊은 복사가 필요합니다. 즉, 개체를 복사한 후 개체의 기본이 아닌 유형 속성에 대해 서둘러 복제 메서드를 호출해야 합니다. 딥 카피.
clone 메소드는 얕은 복사를 수행합니다
위 내용은 Java에서 clone() 사용 예 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!