2014-09-11 3 views
0

일부 코드에서 작업 중이며 다른 개체에 개체 참조를 복사하는 방법을 알아 내려고합니다. 계속 사용되는 clone() 메서드를 계속 볼 수 있지만 결함이 있음을 읽고 이미 복사하려는 클래스는 serializable을 구현 중입니다. 그래서 내가 가진 한 가지 질문은 '='과 복제 방법을 사용하는 것의 차이에 관한 것입니다.이 두 가지 모두 얕은 사본이므로 동일한 경우 작동해야하지만, 사실이라면 방법이있는 이점은 무엇입니까? 이거?'='대 Java에서 clone() 사용

내가 작업하고있는 코드는 두 객체 배열을 가지고 있습니다. 두 객체의 동일한 유형, 두 배열의 모든 객체는 처음에는 null이고 배열 B의 값을 배열 A와 동일하게 지정합니다. 코드 배열 A의 객체가 초기화되고 배열 A에있는 객체의 변수에 값이 할당됩니다. 그래도 코드 끝에서 배열 B의 모든 객체는 여전히 null입니다.

개념이 잘못 되었습니까? 개념이 잘못되지 않았다면 필자는 코드에서 간과 할 부분이라고 생각한다.

도움을 주시면 감사하겠습니다.

+1

당신의 질문은 사과를 오렌지와 비교하는 것입니다. 사과는 비교할 수 없을만큼 완전히 다릅니다. '='는 참조를 할당합니다. Clone은 복제 된 객체와 상태가 같아야하는 완전히 새로운 객체를 생성하지만이 두 가지는 매우 다릅니다. –

+1

샘플 코드를 제공하여 참조 할 수 있다면 코드를 설명하는 것이 더 낫습니다. –

답변

1

=을 사용하면 (메모리에있는) 개체 참조가 복사됩니다. .clone()을 사용하면 새 객체를 만듭니다.

+0

간단하고 정확합니다. – Christian

3

내가 대답 내 댓글을 것이다 :

귀하의 질문은 사과와 오렌지를 비교하고, 그들은 비교 될 수 없을 정도로 완전히 다르다. =은 참조를 지정합니다. 클론은 이라는 새 객체을 만들고 그 중 상태 인은 복제 된 객체와 동일해야하지만 완전히 다른 객체/참조입니다. 제쳐두고 깊고 얕은 클론이 있으므로 얕은 복사 된 복제본의 합성 필드는 동일 할 수 있지만 다른 질문의 대상입니다.

+0

입력 해 주셔서 감사합니다. 이해할 수 없었습니다. –