2 つの独立変数が必要な場合、クラスをコピーする最良の方法は何ですか? 私は単純なクラスを持っています:
public class MyClass
{
boolean a = false;
String b= "not empty";
}
次のようなメソッドを作成する必要がありますか?
assign(MyClass data )
{
a= data.a;
b= data.b;
}
Javaでオブジェクトをコピー(複製)する自動方法はありますか?
2 つの独立変数が必要な場合、クラスをコピーする最良の方法は何ですか? 私は単純なクラスを持っています:
public class MyClass
{
boolean a = false;
String b= "not empty";
}
次のようなメソッドを作成する必要がありますか?
assign(MyClass data )
{
a= data.a;
b= data.b;
}
Javaでオブジェクトをコピー(複製)する自動方法はありますか?
コピー コンストラクターを使用して手動でディープ クローンを作成するか、次のような目的で使用できるユーティリティを使用できます: https://code.google.com/p/cloning/
クラスに多くの非プリミティブ メンバー変数がある場合、ディープクローニングの複雑さが増すため、そのユーティリティを使用することをお勧めします。
これらは 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
}
}
リフレクション パッケージを使用して値をコピーする別の方法もありますが、結局のところ、設計に関して正しい方向に進んでいますか?
あなたが考えていることを教えていただければ、デザインパターンが役立つかもしれません