>Java >java지도 시간 >Java의 Clone() 및 복사 생성자: 어느 것을 사용해야 합니까?

Java의 Clone() 및 복사 생성자: 어느 것을 사용해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 18:29:17623검색

Clone() vs. Copy Constructor in Java: Which Should You Use?

Java의 Clone()과 복사 생성자 비교

질문이 생깁니다. Java에서는 Clone() 메서드 중 어떤 접근 방식이 더 권장됩니까? 아니면 그 사본 생성자?

답변:

답은 명확합니다. Clone() 메서드를 모두 사용하지 마세요. 예기치 않은 동작이 발생할 수 있으므로 "깨진" 것으로 널리 간주됩니다.

Clone() 메서드는 객체의 동일한 복사본을 생성하기 위해 Java에서 도입되었습니다. 그러나 다음과 같은 몇 가지 단점이 있습니다.

  • 호환되지 않는 변경 사항: 복제본에 대한 수정 사항은 원본 개체에 반영되지 않습니다.
  • 가시성 보호 : Clone() 메서드는 보호되어 있으므로 일반적으로 다른 사용자가 액세스할 수 없습니다. 하위 클래스입니다.
  • 객체 복제: Cloneable을 구현하는 객체의 복제를 처리하지 않습니다.

Clone()을 사용하는 대신 다음을 구현하는 것이 좋습니다. 객체의 필드를 수동으로 복사하는 복사 생성자. 예는 다음과 같습니다.

public Foo copyFoo (Foo foo) {
  Foo f = new Foo();
  // Copy all properties from the original object into the new one
  return f;
}

이 방법을 사용하면 Clone() 메서드의 제한을 피하면서 동일한 속성을 가진 새 객체가 생성됩니다.

위 내용은 Java의 Clone() 및 복사 생성자: 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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