스칼라에서 AnyRef.clone
은 얕은 복사본이나 깊은 복사본을 수행합니까?스칼라 AnyRef.clone은 얕은 복사본이나 깊은 복사본을 수행합니까?
13
A
답변
21
짧은 대답 : 얕은.
이렇게 짧은되지 않음 대답 : 그것은 오버라이드 (override) 않는 한 는 AnyRef.clone는() 구현으로 자바의 Object.clone()에()를 사용합니다. 따라서 Object.clone()에
자바 독 클래스 Object 위한
있어서 클론 특정 복제 작업을 수행한다. 첫 번째,이 객체의 클래스 이 인터페이스 Cloneable을 구현하지 않으면 CloneNotSupportedException이 발생합니다. 모든 배열은 으로 간주되어 Cloneable 인터페이스를 구현합니다. 그렇지 않은 경우이 메서드는이 객체의 클래스 의 새 인스턴스 을 만들고이 필드의 해당 필드의 내용 인 과 정확히 일치하는 모든 필드를 초기화합니다. 의 내용은 필드 자체가 복제되지 않습니다. 따라서이 메서드는 "deep 복사"작업이 아니라이 개체의 "shallow 복사본"을 수행합니다.
참고 :
- AnyRef.clone을(), 자바에서의 대응처럼, 그 호출하지 그래서 모든 곳에서하는 "보호"액세스 수준을 가지고있다.
- clone()이 작동하려면 Cloneable을 구현해야합니다.
긴 대답 : 그것을 사용하지 마십시오 신중하게
요약가 재정의 클론 : 효과적인 자바, 제 2 판, 항목 11을 참조하십시오. 더 나은 대안이 있습니다.
관련 문제
- 1. SqlCommand.Clone()은 전체 복사본이나 얕은 복사본을 만듭니 까?
- 2. 깊은 사본
- 3. 개체의 컨텍스트가 다른 경우 NSManagedObject의 얕은 복사본을 만드는 방법은 무엇입니까?
- 4. 자바에서 컬렉션의 얕은 복사본
- 5. Perl 해시 참조의 단순 복사본을 만들려면 어떻게해야합니까?
- 6. 안드로이드의 인 텐트에있는 오브젝트의 얕은 복사
- 7. 자바의 얕은 복사
- 8. 자바 스크립트 얕은 복사본
- 9. 얕은 복사 downcasting
- 10. C# - 목록 구성원에 깊은 복사본이 필요합니까?
- 11. 액세서/뮤 테이타의 얕은/딥 복사 의미론
- 12. 개체의 얕은 복사본을 사용할 때 두 번 사용 가능한 오류가 있습니다 ... 해결 방법은 무엇입니까?
- 13. C : 구조체의 복사본 만들기 ... 구조체의 얕은 복사본 만들기
- 14. 교리 레코드의 깊은 복사본
- 15. 간단한 질문 - 얕은 복사 (VB.Net)
- 16. structDelete는 얕은 복사본에 영향을주지 않습니까?
- 17. CakePHP 깊은 정렬
- 18. JS의 다형성과 깊은 상속
- 19. 레일에 깊은 열망 부하
- 20. 워드 프레스 깊은 통합
- 21. 자바 스크립트로 깊은 상속?
- 22. php의 길고 깊은 매트릭스
- 23. 깊은 JSON 직렬화는
- 24. 아음속에 깊은 하중이 있습니까?
- 25. UINavigationController에 대한 깊은 이해
- 26. 트리플 콜론 스칼라
- 27. 어떻게 깊은 특성 다음 코드를 감안할 때
- 28. "가장 얕은"일치하는 자손을 어떻게 선택할 수 있습니까?
- 29. 스칼라
- 30. 스칼라
"더 나은 대안이 있습니다." 당신이 좀 참조할까요? –
1. C++에 따라 생성자를 복사하십시오. 2. Scala 2.8.x에 내장 된 "copy"메소드가있는 케이스 클래스. 3. 변경할 수없는 개체를 사용하십시오. 복사하거나 공유하지 않아도됩니다. –
그래서 스칼라에서는 C++과 같은 복사본 생성자가 실제로 (일종의) 괜찮습니까? C++에서 언어로 왔고 첫 번째 복사본 생성자를 수행하기 전에 몇 가지 사항을 놓치고 있는지 확인하고 싶었습니다. 보입니다 ... 괜찮습니다 (제 물건의 상태가 변할 수 있습니다). – akauppi