我有界面:

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){

10-07 19:09