原因:jdk 1.5及以上编译 且对象未具体指定类型
由于jdk 1.5以后的Comparable接口定义如下
public interface Comparable<T> {
public int compareTo(T o)
}
所以使用泛型时如果需要Comparable时,需要如下写法
Class Heap<E extends Comparable<E>>{}
另外,还有一些不经意的错误会造成,例如:
class<T> ClassA{
T element;
};
main(){
//会发生警告
ClassA a =new ClassA();
a.element=2;
//修改为如下
ClassA<Integer> a=new ClassA<>();
a.element=2;
}
由于java不支持泛型数组,所以当出现类似一下的代码时,也会发生警告。
class OB<T>
{
private Object o;
public void setO(T t){
this.o=t;
}
public T getO(){
return (T) this.o;
}
}