1

2 つの独立変数が必要な場合、クラスをコピーする最良の方法は何ですか? 私は単純なクラスを持っています:

public class MyClass 
{
boolean a = false;
String b= "not empty";
}

次のようなメソッドを作成する必要がありますか?

assign(MyClass data )
{
a= data.a;
b= data.b;
}

Javaでオブジェクトをコピー(複製)する自動方法はありますか?

4

3 に答える 3

1

コピー コンストラクターを使用して手動でディープ クローンを作成するか、次のような目的で使用できるユーティリティを使用できます: https://code.google.com/p/cloning/

クラスに多くの非プリミティブ メンバー変数がある場合、ディープクローニングの複雑さが増すため、そのユーティリティを使用することをお勧めします。

于 2013-09-24T18:21:47.567 に答える
0

これらは 2 つのアプローチであり、最初は Cloneable インターフェースを使用し (これは推奨されません)、もう 1 つは、現在の状態で新しいインスタンスを返すクラス内にメソッドを作成することです。

public class MyObject implements Cloneable {

    private int num = 0;

    // a method to show how to clone an object
    private void copyObject() throws CloneNotSupportedException {

        MyObject a = new MyObject();
        a.num = 10;

        MyObject b = (MyObject)a.clone();
        System.out.println(b.num);
        // result : 10
        // values are copied to the new object

        b.num = 20;
        System.out.println(a.num + " - " + b.num);
        // result : 10 - 20
        // 2 different objects, the new object didnt effect the original one
    }

    // a method to create a copy
    public MyObject copy() {
        MyObject copy = new MyObject();
        copy.num = this.num;
        // do the same to all your variables
        return copy;
    }

    // a method to show how to use the copy() method
    private void useCopy(){

        MyObject a = new MyObject();
        a.num = 100;

        MyObject b = a.copy();

        System.out.println(a.num+" - "+b.num); 
        //  result : 100 - 100
        //  value copied to the new Object

        a.num = 10;
        b.num = 20;
        System.out.println(a.num + " - " + b.num);
        //  result : 10 - 20
        //  although b was copied from a, but both are 2 different Objects
    }
}

リフレクション パッケージを使用して値をコピーする別の方法もありますが、結局のところ、設計に関して正しい方向に進んでいますか?

あなたが考えていることを教えていただければ、デザインパターンが役立つかもしれません

于 2013-09-24T19:02:45.483 に答える