Cloneable 인터페이스 정확하게 증가

오늘 디 버 깅 프로그램 은 해석 할 때 clone 함 수 를 사용 한 것 을 발 견 했 지만 결 과 는 null 입 니 다. 이상 합 니 다.
코드 를 보고 override 는 clone 함 수 를 얻 었 습 니까? 아니면 null 을 얻 었 습 니까?
stackoverflow 를 계속 검색 해 보 니 Cloneable 인터페이스 설명 이 추가 되 지 않 았 습 니 다.
성명 을 늘 린 후 문 제 를 해결 하 다.
http://stackoverflow.com/questions/1052340/what-is-wrong-with-this-clone
The standard pattern for making a class cloneable is:
  • Implement Cloneable
  • Override the clone() method and make it public
  • In clone() call super.clone() and then copy any mutable object's state

  • You should not create a new object using new . The proper way is to call super.clone() for a new instance. Object 's clone() is special and will create a new copy of the object and copy its primitive fields and references.
    새 키 워드 를 사용 하여 새 대상 을 만 들 필요 가 없습니다.적절 한 방법 은 슈퍼 클론 을 호출 하여 새로운 대상 을 만 드 는 것 이다.Object 의 clone () 은 특별 합 니 다. 새로운 대상 을 만 들 고 기본 형식 과 인용 을 복사 합 니 다.(여 기 는 깊 은 복사 와 얕 은 복사 와 관련 되 어 있 으 니 스스로 glgoo. com)
    For example:
    public class Person implements Cloneable { protected String name; // Note that overridden clone is public public Object clone() { Person clone = (Person)super.clone(); // No need to copy name as the reference will be // copied by Object's clone and String is immutable return clone; } } public class Employee extends Person { protected int id; protected java.awt.Point location; public Object clone() { Employee clone = (Employee )super.clone(); // No need to copy id as Object's clone has already copied it // Need to clone location as Point is mutable and could change clone.location = location.clone(); return clone; } }

    좋은 웹페이지 즐겨찾기