使用Java接口复制构造函数

使用Java接口复制构造函数,java,Java,我有一个类,它有一组接口,我需要克隆这个对象。我不想使用克隆接口,而是想使用复制构造函数。我在谷歌上搜索了一下,似乎找不到答案。例如,我意识到有其他方法可以通过复制方法来实现这一点,但我不希望将其添加到我的接口中。谢谢你的帮助 public Component(Component source){ for (Behavior behavior : behaviors) { behaviors.add(new Behavior(behavior)); }} 不能在接口中定义构造函数,因此必

我有一个类,它有一组接口,我需要克隆这个对象。我不想使用克隆接口,而是想使用复制构造函数。我在谷歌上搜索了一下,似乎找不到答案。例如,我意识到有其他方法可以通过复制方法来实现这一点,但我不希望将其添加到我的接口中。谢谢你的帮助

public Component(Component source){
for (Behavior behavior : behaviors) {
  behaviors.add(new Behavior(behavior));
 }}

不能在接口中定义构造函数,因此必须使用克隆或复制方法。

不能向接口添加构造函数。这是办不到的

你避免克隆的本能是很好的。您可能需要一个虚拟工厂方法来决定要返回的公共接口的具体类型。

您可以:

向行为接口添加一个复制方法,这样每个实现都可以选择返回什么,如果实例本身是不可变的,它甚至可以是实例本身,请参见下面的第2点。 要求行为是不可变的,因此不需要复制它。不过,这可能很难实施。 将行为设置为抽象类,并向其添加副本构造函数。不过,这可能是您的层次结构中的一个缺陷。
依我看,最干净的方法是为每个行为接口实现重写对象的克隆方法