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是对的,无论是我在构造函数中编写的方式还是复制的方式,都只是实现这一点的两种方式(据我所知)…时髦的方式不应成为拒绝解决方案的借口:/