Java深度クローンと浅さクローンについての簡単な説明


この问题は一ヶ月前から书きたいと思っていたので、今までずっと引きずっていました.问题の源は私が笔记试験の问题をしていた时に出会ったこの问题で、その时は少しmengbiでした.后で研究してもまだ知らない学生に参考にしてあげました.
本題に入る:
UserInfo user 1=new UserInfo(「ウォーキング」,22);UserInfo user2 = user1;
これにより、user 2とuser 1は同じUserInfoオブジェクトを指しますが、user 1またはuser 2を操作すると相手に影響を与えるという問題があります.この時点で[クローン](Clone):
UserInfo user2 = user.clone();
これにより、user 2は新しいUserInfoオブジェクトを指し、データメンバーはuser 1と同じになる.ここでは「浅いクローン」と呼ばれていますが、新しい問題が発生しました.clone()は基本データ型に対してだけで、日付Dateなどの参照タイプに対しては簡単にオブジェクトを指します.深度クローンを作成する必要があります.
 public class UserInfo implements Cloneable{
    public Object clone() throws CloneNotSupportedException  {
        UserInfo clonedUser = (UserInfo) super.clone();
        clonedUser.date = (Date) date.clone();//date     
        return clonedUser;
    }
 }

このようにして、私たちは再び行います.
UserInfo user2 = user1.clone();
問題はありません.これが深度クローンです.
うーん...ちょっと薄っぺらな言い方ですが、みんなが読めたらいいな.もっと詳しく知りたいのは大神たちのブログを見て、ただ知っていれば私が書いただけで十分です.