Java clone 방법 상세 설명 및 간단한 실례
"clone"은 무엇입니까?
실제 프로그래밍 과정에서 우리는 이런 상황을 자주 겪어야 한다. 하나의 대상 A가 어느 순간에 A에 유효한 값이 포함되었다. 이때 A와 완전히 같은 새로운 대상 B가 필요할 수도 있고 이후에 B에 대한 어떠한 변동도 A의 값에 영향을 주지 않는다. 즉, A와 B는 두 개의 독립된 대상이지만 B의 초기 값은 A 대상에 의해 결정된다.자바 언어에서 간단한 값 부여 문장으로는 이런 수요를 만족시킬 수 없다.이런 수요를 만족시키려면 여러 가지 경로가 있지만 clone () 방법을 실현하는 것은 그 중에서 가장 간단하고 효율적인 수단이다.
Java의 모든 클래스는 기본적으로 java를 상속합니다.lang.Object 클래스,java에 있습니다.lang.Object 클래스에 clone () 방법이 있습니다.JDK API의 설명서는 이 방법을 설명하면 Object 객체의 복사본을 반환합니다.설명할 것은 두 가지가 있다. 첫째, 복사 대상은 인용이 아니라 새로운 대상이다.둘째, 복사 대상과 new 조작부호로 되돌아오는 새로운 대상의 차이점은 이 복사는 대상의 초기 정보가 아니라 원래 대상의 정보를 포함하고 있다는 것이다.
어떻게 clone () 방법을 적용합니까?
전형적인 호출 clone () 코드는 다음과 같습니다.
class CloneClass implements Cloneable{
public int aInt;
public Object clone(){
CloneClass o = null;
try{
o = (CloneClass)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
}
세 가지 주의할 점이 있다. 첫째, clone 기능을 실현하고자 하는 Clone Class 클래스는 Cloneable 인터페이스를 실현했다. 이 인터페이스는java에 속한다.가방lang 패키지는 이미 부족한 가져오기 클래스에 있기 때문에java로 쓸 필요가 없습니다.lang.Cloneable.또 다른 주의할 점은 클론 () 방법을 다시 불러오는 것입니다.마지막으로 clone () 방법에서super를 호출했습니다.clone (), 이것은 clone 클래스의 계승 구조가 어떤 것이든지, 슈퍼를 의미한다.clone () 은 자바를 직접 또는 간접적으로 호출했습니다.lang.Object 클래스의clone () 방법입니다.다음은 이 몇 가지를 더 상세하게 설명해 드리겠습니다.세 번째가 가장 중요하다고 해야 한다. Object류의clone () 하나의native 방법을 자세히 살펴보면native 방법의 효율은 일반적으로 자바의 비native 방법보다 훨씬 높다.이것 또한 왜 Object에서 clone () 방법을 사용해야 하는지 설명한다. 먼저 new 클래스가 아니라 원시 대상의 정보를 새로운 대상에 부여해야 하는지. 비록 이것도 clone 기능을 실현했지만.두 번째는 Object 클래스의clone () 또는protected 속성을 관찰하는 방법이다.이것 또한 clone () 방법을 적용하려면 Object 클래스를 계승해야 한다는 것을 의미한다. 자바에서 모든 클래스는 계승 Object 클래스가 부족하기 때문에 이 점에 관심을 갖지 않아도 된다.그리고 clone () 방법을 다시 불러옵니다.또 하나 고려해야 할 것은 다른 클래스가 이 clone 클래스의 clone () 방법을 호출할 수 있도록 다시 불러온 후에 clone () 방법의 속성을public로 설정해야 한다는 것이다.
그렇다면 클론 클래스는 왜 클론 인터페이스를 실현해야 합니까?조금만 주의하세요, Cloneable 인터페이스는 어떤 방법도 포함하지 않습니다!사실 이 인터페이스는 하나의 표지일 뿐이고 이 표지도 Object 클래스의clone () 방법에 대한 것일 뿐입니다. 만약clone 클래스가 Cloneable 인터페이스를 실현하지 못하고 Object의clone () 방법 (즉 슈퍼. Clone () 방법을 호출하면 Object의clone () 방법은 Clone Not Supported Exception 이상을 던집니다.
이상은 clone의 가장 기본적인 절차입니다. 성공한 clone을 완성하려면'그림자 clone'과'깊이 clone'이 무엇인지 알아야 합니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.