我有界面:
public interface AddableBox<T> extends Box<T> {
public AddableBox<T> add(AddableBox<T> other);
}
和一些使用它的类:
public class TestClass {
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
a1.add(a2);
}
}
示例中的a1和a2必须为相同的类型。
此代码生成错误:
类型AddableBox中的方法add(AddableBox)不适用于参数(T)
如何解决?对不起,如果重复。
最佳答案
问题是您在声明类型参数AddableBox
的绑定T
中使用的通配符。一个AddableBox<?>
的类型不能与另一个AddableBox<?>
的类型相同,并且add
中的AddableBox
方法要求它们必须相同。
您可以将T
本身用作绑定的类型参数。更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
至
public <T extends AddableBox<T>> void SomeMethod(T a1, T a2){