我有以下代码:
public class AClass<X extends AnInterface> implements AnotherInterface {
public AClass(X x){
}
}
X
当我可以将其替换为AnInterface
??时,为什么要使用构造函数参数类型?当然,它们的意思是一样的,任何是AnInterface
?的子类型。
我试图将我的所有参数类型保持为泛型,并且只在泛型参数声明中提及接口名称,例如“X 扩展 AnInterface”,但遇到问题,因为它表示我传入的 AnInterface 类型的值不相等键入 X。
编辑:
public void<X extends AnInterface> myMethod(){
AnInterface b = new ADiffClass();
AnotherInterface a = new AClass(b);
}
public class ADiffClass<X extends AnInterface> implements AnInterface {
public ADiffClass(){
}
}
这就是我遇到问题的地方,我收到一个编译错误,说 b 的类型是 AnInterface,而 AClass 的构造函数中所需的类型是 X。