是否有 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()
机制。
有什么方法可以在构造函数中实现 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()
机制。