是否有 shorthand 用于在构造函数中复制对象?

Is there a shorthand to copy an object within a constructor?

有什么方法可以在构造函数中实现 this = that 吗? that 是我要复制的对象(因此是与 this 相同 class 的对象,this 是对象引用)。​​

class Foo {

  private final Bar bar;

  public Foo() {
    Foo that = DaggerFactory.create().getFoo();
    // this = that; but it's not working!?
  }
  
  @Inject
  public Foo(Bar bar) {
    this.bar = bar;
  }

  // Other methods
}

我见过复制构造函数的例子,他们将成员一一复制,即 this.bar = that.bar。这是我最后的选择,因为我在 class 中有一些成员,我不想不必要地“弄乱”我的代码。

P.S。我确实想通过空构造函数实例化对象,因为这就是 AWS Lambda 的工作方式(我将在其中部署它)。到目前为止,我还没有找到任何方法让 Lambda 使用 Dagger 提供的对象。如果有更好的 Lambda / Dagger 方法,那也很棒!

在 Java 中没有编写复制构造函数的巧妙(快捷方式/shorthand)方法。在源代码级别,您必须一次分配一个字段。

通常情况下,我会“硬着头皮”写代码。但还有一些其他选择:

  • 您的IDE可能有办法生成复制构造函数。 (Eclipse 没有,但显然您可以为所有字段生成常规构造函数,然后对生成的代码执行一些巧妙的搜索替换操作;请参阅 Eclipse generate copy constructor

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

  • 您可以改用 clone() 机制。