Java类型变量依赖项不匹配

时间:2017-05-28 10:07:24

标签: java variables generics types compilation

您能否向我解释为什么在尝试定义时出现此错误?

通用类:

public class GenericClass<T, S extends T> {
    ...
}

Main.java

public class Main(){
     public static void main(String[] args){

         // This line generates compilation error
         GenericClass<Number, Integer> object = new GenericClass();
     }
}

我收到此错误:

Bound mismatch: The type Integer is not a valid substitute for the bounded parameter <S extends T> of the type GenericClass<T,S>

[解决]

我的项目中有另一个名为Integer的课程

非常感谢您快速回复

1 个答案:

答案 0 :(得分:3)

此代码编译并运行正常。

没有编译错误,但正如nullpointer所解释的那样,有一个警告:

Unchecked assignment of GenericClass to GenericClass<java.lang.Number, java.lang.Integer>

解决此问题的一种简单方法是用以下代码替换您的代码:

// Java 6 and lower
GenericClass<Number, Integer> object = new GenericClass<Number, Integer>();

// Java 7 and higher, using the diamond operator
GenericClass<Number, Integer> object = new GenericClass<>();