>Java >java지도 시간 >Java에서 clone() 사용 예 공유

Java에서 clone() 사용 예 공유

黄舟
黄舟원래의
2017-09-28 09:38:311438검색

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.