찾다

 >  Q&A  >  본문

Java Deep Copy에 대한 질문

아래 코드에서 그 이유는

으아악

딥 카피가 가능한가요?

으아악
ringa_leeringa_lee2775일 전502

모든 응답(4)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-05-17 10:09:33

    이것은 표면적으로는 "딥 카피"처럼 보입니다. 사실 학생이나 교수 모두 딥 카피를 구현하지 않습니다.

    메인 메소드에 여러 출력을 추가합니다:

    으아악

    s1과 s2의 이름은 여전히 ​​"=="인 것을 볼 수 있습니다. p.name이 설정되지 않으면 이름도 "=="이므로 딥 카피가 구현되지 않습니다.
    s2.p.name을 설정하면 s2.p.name은 다른 문자열 상수의 주소를 가리키므로 (s1.p.name == s2.p.name) //false

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-17 10:09:33

    Yours는 기본 데이터 유형만 복사할 수 있는 얕은 복사본입니다. 객체 멤버 변수를 복사하려면 멤버 변수의 복제 메서드도 호출해야 합니다. 이것이 제가 이해하는 방법입니다. 딥 카피#🎜🎜 #

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-05-17 10:09:33

    복제를 시도할 수는 없습니다. 이는 문자열이 여전히 참조된 원본임을 의미합니다.

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-17 10:09:33

    jdk clone 메소드의 기본 구현은 값 복사입니다. 기본 유형의 경우 복사 값입니다. 참조의 경우 복사 참조가 가리키는 주소입니다.

    따라서 o.p=(Professor)p.clone(); 코드가 없으면 원본 개체의 p와 복제 개체는 얕은 복사본인 동일한 교수 개체를 참조합니다.

    회신하다
    0
  • 취소회신하다