本问题需要对泛型有深刻了解,原理题主明白,只是不明白我下面说明的这个问题
代码如下
public class Shape implements Comparable {
@Override
public int compareTo(Shape o) {
return 0;
}
}
public class Square extends Shape {
}
public class TestGenetic {
public static > AnyType findMax(AnyType[] arr){
int maxIndex=0;
for (int i = 0; i
if (arr[i].compareTo(arr[maxIndex+1])>0)
maxIndex=i;
}
return arr[maxIndex];
}
public static void main(String[] args) {
Shape[] shapes={new Shape(),new Shape()};
Square[] squares={new Square(),new Square()};
findMax(shapes);
findMax(squares);
}
}
若修改一下泛型泛型方法中的泛型:
public class TestGenetic {
public static > AnyType findMax(AnyType[] arr){
int maxIndex=0;
for (int i = 0; i
if (arr[i].compareTo(arr[maxIndex+1])>0)
maxIndex=i;
}
return arr[maxIndex];
}
public static void main(String[] args) {
Shape[] shapes={new Shape(),new Shape()};
Square[] squares={new Square(),new Square()};
findMax(shapes);
findMax(squares);
}
}
同样不会报错
但是,在泛型类中则不是这样
public class TestGeneric1> {
public static void main(String[] args) {
TestGeneric1 p=null;
}
}
这种不会报错,但是,如果我修改一下泛型,如下:
public class TestGeneric1> {
public static void main(String[] args) {
TestGeneric1 p=null;//编译报错
}
}
则编译报错,请问为什么在泛型类中会进行泛型检查,而泛型方法中不进行检查呢,在泛型方法中,Square明明不符合AnyType extends Comparable这一条件呀
请指教,谢谢