Java 如何将基类中的字段很好地复制到Dervied类中?
我有一个基类Java 如何将基类中的字段很好地复制到Dervied类中?,java,inheritance,Java,Inheritance,我有一个基类a和一个派生类B。 如何在一个简单的行中将字段从a类型的对象复制到B类型的对象中? 我有一个方法,如果有帮助的话,可以从字段值构建对象。 我不想使用任何类型的反射 class A{ String id; //and setter/getter } class B extends A{ String b; //and setter/getter } public A buildA(String id){ A=new A(); a.setId(id); return
a
和一个派生类B
。
如何在一个简单的行中将字段从a
类型的对象复制到B
类型的对象中?
我有一个方法,如果有帮助的话,可以从字段值构建对象。
我不想使用任何类型的反射
class A{
String id; //and setter/getter
}
class B extends A{
String b; //and setter/getter
}
public A buildA(String id){
A=new A();
a.setId(id);
return A();
}
// how to copy A=buildA("a") into a B type of object...
// I would avoid doing
//public B voidB(String id, string b){
B=new B();
b.setId(
b.setB...
// Remark - I cannot do the init from constructor with fields!
有一个名为的库,可能会对您有所帮助(不过我还没有尝试过)。这是您正在寻找的,还是我走错了方向
public B buildB(A a,String str){
b=new B();
b.setId(a.getId());
b.setB(str);
return B;
}
您只需要在类
B
中使用一个copy方法,该方法复制a
中的值:public void copy(final a a)
。然后只需在B
中的单个方法中写出所有复制,然后调用B;A
,初始化A
和B
,然后调用B.copy(A)代码>当你想将A
复制到B
中时。为什么不在构造函数中进行复制?为什么?为什么你想要两次相同的数据?你想达到什么目的?请澄清你的问题,因为我不明白你在说什么。为什么不创建一个构建B的buildB
方法?@markusw如果在构造函数中进行复制,那么只能创建一个新对象。如果你创建了一个可以覆盖这个对象的方法(复制方法),那么你就可以重用这个对象,而不是每次你想把一个a
复制到B
中时就用一堆新的B
对象填满堆。这就是我想得到的,但是用一种时髦的方式:)在构造函数中进行复制!没有其他方法可以使用纯的Java@Roxana.. markusw是对的,无论是我在构造函数中编写的方式还是复制的方式,都只是实现这一点的两种方式(据我所知)…时髦的方式不应成为拒绝解决方案的借口:/