자바

자바 객체 깊은 복사와 얕은 복사

알통몬_ 2019. 7. 11. 10:38
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


얕은 복사

객체의 주소를 대입합니다.

때문에 하나의 객체의 어떠한 값이 변경되면 값을 대입한 다른 객체의 값 또한

변경됩니다.

UserInfo userInfo = new UserInfo();

UserInfo userInfo1 = userInfo;


깊은 복사

객체의 주소가 아닌 값들을 복사합니다.

때문에 값을 변경함에 있어서 자유롭습니다.

package com.example.jjapstagram_java.util;

import java.io.Serializable;

public class UserInfo implements Serializable, Cloneable {

private String userEmail;
private String userName;
private String disPlayPhotoUri;
private String userNickName;
private String userPhoneNumber;
private String userStatusMsg;
private String userGender;


public UserInfo(){}

public UserInfo(String userEmail, String userName, String disPlayPhotoUri, String userNickName,
String userPhoneNumber, String userStatusMsg, String userGender) {
this.userEmail = userEmail;
this.userName = userName;
this.disPlayPhotoUri = disPlayPhotoUri;
this.userNickName = userNickName;
this.userPhoneNumber = userPhoneNumber;
this.userStatusMsg = userStatusMsg;
this.userGender = userGender;
}

@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

Cloneable 인터페이스를 구현합니다.

clone() 메소드를 재정의 합니다.

public void setmUserInfo(UserInfo userInfo) throws CloneNotSupportedException {
this.mUserInfo = (UserInfo) userInfo.clone();
}

마지막으로 이렇게 사용하면 됩니다.

이상입니다. 감사합니다.




반응형