使用默认的复制构造函数[Java]

使用默认的复制构造函数[Java],java,Java,具有下列特征: public interface IntA{ } public class A implements IntA{} public class A2 extends A { public A2(IntA a) { if(a instanceof A) this(a); else // whatever } } 如果a是a的实例,那么我希望这个引用a不创建它的深度副本,否则这个成为一个新对象(新引用)。这可能吗?不,使用工厂方法或在客户机代码中

具有下列特征:

public interface IntA{ }

public class A implements IntA{}

public class A2 extends A {

 public A2(IntA a) {
  if(a instanceof A)
     this(a);
  else
    // whatever

 }
}

如果
a
a
的实例,那么我希望
这个
引用a不创建它的深度副本,否则
这个
成为一个新对象(新引用)。这可能吗?

不,使用工厂方法或在客户机代码中这样做。java没有默认的复制构造函数。也就是说,我质疑你的设计。做两个构造函数。接受类型为
A
的参数和默认参数的参数。Java不允许在调用另一个构造函数中的另一个构造函数之前编写代码。这是一种过于简单化的做法。真正的问题实际上是多重继承,这在java中是不可能的。问题的根源是我有两个不同类的实例,它们应该是相同的。我正在寻找一个解决方案,使问题对我的类的用户尽可能透明。那么这是一个XY问题吗?您能展示一个使用场景吗?不,使用工厂方法,或者在您的客户机代码中这样做。java没有默认的复制构造函数。也就是说,我质疑你的设计。做两个构造函数。接受类型为
A
的参数和默认参数的参数。Java不允许在调用另一个构造函数中的另一个构造函数之前编写代码。这是一种过于简单化的做法。真正的问题实际上是多重继承,这在java中是不可能的。问题的根源是我有两个不同类的实例,它们应该是相同的。我正在寻找一个解决方案,使问题对我的类的用户尽可能透明。那么这是一个XY问题吗?你能展示一个使用场景吗?