繁体   English   中英

Java 8泛型使用通配符的麻烦

[英]Java 8 generics troubles with wildcards

我有界面:

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<?>类型相同,并且AddableBoxadd方法要求它们相同。

您可以将T本身用作边界的类型参数。 更改

public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){

public <T extends AddableBox<T>> void SomeMethod(T a1, T a2){

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM