Java 是否有一种在构造函数中复制对象的速记方法?

Java 是否有一种在构造函数中复制对象的速记方法?,java,aws-lambda,dagger-2,copy-constructor,Java,Aws Lambda,Dagger 2,Copy Constructor,是否有某种方法可以在构造函数中实现this=that该是我要复制的对象(因此是与此相同类别的对象,此是对象引用) class-Foo{ 私人终审律师; 公共食物({ Foo-that=DaggerFactory.create().getFoo(); //这个=那个;但它不起作用!? } @注入 公共餐厅(酒吧){ 这个.bar=bar; } //其他方法 } 我见过复制构造函数的示例,其中他们一个接一个地复制成员,即this.bar=that.bar。这是我的最后一个选择,因为我在类中有一些成

是否有某种方法可以在构造函数中实现
this=that
是我要复制的对象(因此是与
相同类别的对象,
是对象引用)

class-Foo{
私人终审律师;
公共食物({
Foo-that=DaggerFactory.create().getFoo();
//这个=那个;但它不起作用!?
}
@注入
公共餐厅(酒吧){
这个.bar=bar;
}
//其他方法
}
我见过复制构造函数的示例,其中他们一个接一个地复制成员,即
this.bar=that.bar
。这是我的最后一个选择,因为我在类中有一些成员,我不想不必要地“混乱”我的代码

另外,我确实希望通过空构造函数实例化对象,因为AWS Lambda就是这样工作的(我将在这里部署它)。到目前为止,我还没有找到任何方法让Lambda使用匕首提供的物品。如果有更好的方法来处理Lambda/Dagger,那也太好了

用Java编写副本构造函数没有聪明的(快捷/速记)方法。在源代码级别,必须一次分配一个字段

通常,我只是“咬紧牙关”写代码。但还有其他几种选择:

  • 您的IDE可能有一种生成副本构造函数的方法。(Eclipse没有,但显然您可以为所有字段生成一个常规构造函数,然后对生成的代码进行一些巧妙的搜索替换;请参阅)

  • 可以想象,您可以编写一些可重用代码,使用反射将字段从一个对象复制到另一个对象。这是相当低效的,但是如果您必须处理字段数量非常多的类,那么这可能是可以接受的

  • 您可以使用
    clone()
    机制


无法使构造函数返回使用工厂方法创建的对象(例如示例中的
DaggerFactory.create().getFoo()
)。当构造函数运行时,对象已经存在,您需要初始化它。在Java中,分配给
这个
是不可能的。不,没有速记。你可以看看lombok的生成器(toBuilder=true),它为你提供了一个可以满足你需要的生成器。@juwil Cool!会看into@Jesper让我们暂时忘掉工厂吧。如果它是一个普通的复制构造函数呢?一个接一个地复制成员是唯一的选择吗?您是否知道类似于Lombok的复制构造函数的
@noargsconstuctor
?Lombok似乎没有itI,如果您询问Java或Lombok,我可以使用
this(that)
?这个问题和我的回答是关于Java的。是的,这些问题是关于Java的,不幸的是,根据评论和你的回答,没有捷径。所以我问你,根据你的XP,你是否知道任何注释都会有“代码混乱”(至少在我看来是这样),我不太确定的反射,而且
clone()
不是我问题的答案