我有一个泛型类,Storage和另一个泛型类StoragePlus。对于下面带粗体注释的行,我遇到了有限的错误不匹配错误。
这是我的第一堂课的代码。
public class Storage<T extends Comparable<? super T>> {
//private T t;
private T[] isafe;
public int max;
private int nextIndex;
public Storage(int maxNum, T[] seedArr){
if(maxNum < 0){
throw new IllegalArgumentException();
}
else{
isafe = Arrays.copyOf(seedArr, maxNum);
nextIndex = 0;
max = maxNum;
}
}
这是第二堂课的代码。
public class StoragePlus <T> extends Storage<T>{ **//getting an error here**
public StoragePlus(int maxNum, T[] arr){
super(maxNum,(Comparable[]) arr);
}
@Override
public boolean equals(Object obj){
if(obj == null|| obj.getClass() != this.getClass()){
return false;
}
else{
if(obj == this){
return true;
}
else{
@SuppressWarnings("unchecked")
Storage<?> temp = (Storage<T>) obj; **// also getting an error here**
}
}
}
}
答案 0 :(得分:2)
我想你想要
Storage<T extends Comparable<T>>
StoragePlus<T extends Comparable<T>> extends Storage<T>
并且在等于你只能将Object
投射到Storage<?>
。否则,您需要@SuppressWarnings
。
答案 1 :(得分:0)
因为您没有限制T
的{{1}}。