java:将参数传递给复制构造函数 类内ATester { 私有A p1、p2; p1=新的B(); p2=新的B(p1); } 公共B级

java:将参数传递给复制构造函数 类内ATester { 私有A p1、p2; p1=新的B(); p2=新的B(p1); } 公共B级,java,copy-constructor,Java,Copy Constructor,改为 或者调用为p2=新的B((B)p1) 因为您要做的是将A发送到构造函数中的B。 归根结底是这样的 p2 = new B<Integer>( p1); B=A型元件 这是错误的,因为参数类型是相反的。根据设计更改B构造函数中的参数类型,或者执行上述操作将其更改为 或者调用为p2=新的B((B)p1) 因为您要做的是将A发送到构造函数中的B。 归根结底是这样的 p2 = new B<Integer>( p1); B=A型元件 这是错误的,因为参数类型是相反的。根

改为

或者调用为
p2=新的B((B)p1)

因为您要做的是将
A
发送到构造函数中的
B
。 归根结底是这样的

p2 = new B<Integer>( p1);
B=A型元件
这是错误的,因为参数类型是相反的。根据设计更改
B
构造函数中的参数类型,或者执行上述操作将其更改为

或者调用为
p2=新的B((B)p1)

因为您要做的是将
A
发送到构造函数中的
B
。 归根结底是这样的

p2 = new B<Integer>( p1);
B=A型元件

这是错误的,因为参数类型是相反的。根据设计更改
B
构造函数中的参数类型,或者执行上述操作在调用复制构造函数之前,您需要将
p1
强制转换为
B

B b = element of type A<Integer>
p2=新的B((B)p1);
或者您可以定义另一个接受接口类型的构造函数,例如

    p2 = new B<Integer>( (B<Integer>)p1);
public B(A其他)//复制构造函数
{
//在此处键入cast并使用它
}

在调用复制构造函数之前,需要将
p1
强制转换为
B

B b = element of type A<Integer>
p2=新的B((B)p1);
或者您可以定义另一个接受接口类型的构造函数,例如

    p2 = new B<Integer>( (B<Integer>)p1);
public B(A其他)//复制构造函数
{
//在此处键入cast并使用它
}

您的B已经实现了A,因此将构造函数arg从B更改为A:

    public B(A<E> other)  // copy constructor
    {
         //type cast here and use it
    }

公共类B您的B已经实现了A,所以将构造函数arg从B更改为A:

    public B(A<E> other)  // copy constructor
    {
         //type cast here and use it
    }

public class B将
public B(B其他)
更改为
public B(B其他)
@MarkoTopolnik。。这没用。他的p1参考类型是将
公共B(B其他)
更改为
公共B(B其他)
@MarkoTopolnik。。这没用。他的参考型p1,非常感谢!请你再解释一下(B)p1好吗?这是什么意思?例如:Animal a=new Dog()是有效的。因为狗也是一种动物。你想做的是:狗a=新动物()。现在狗不可能是所有的动物。因此,可以使用超级类型代替子类型是错误的,但不能使用其他方式。因此,我正在将p1类型从A类型转换为BAnd类型如果我是你,我会将B的构造函数更改为:public B(B other),以避免编译时间警告非常感谢!请你再解释一下(B)p1好吗?这是什么意思?例如:Animal a=new Dog()是有效的。因为狗也是一种动物。你想做的是:狗a=新动物()。现在狗不可能是所有的动物。因此,可以使用超级类型代替子类型是错误的,但不能使用其他方式。因此,我将p1类型从A类型转换为BAnd类型如果我是你,我会将B的构造函数更改为:public B(B other)以避免编译时间警告这实际上取决于设计。我个人不会;这实际上取决于设计。我个人不会;我做不到