Java 泛型
package simpleTest;
class Layer1<T> {
public String toString() {
return "Class Layer1.";
}
}
class Layer2 extends Layer1<Layer2> {
public String toString() {
return "Class Layer2.";
}
}
class Layer3 extends Layer2 {
public String toString() {
return "Class Layer3.";
}
}
class Generic<T> {
}
public class GenericTest2 {
public static void test1(Class<? extends Layer2> lay){
System.out.println(lay);
}
public static void test2(Layer<? extends Layer2> lay){
System.out.println(lay);
}
public static void main(String[] args) {
test1(new Layer3().getClass());
//test1(new Layer1().getClass()); 编译器报错
// 以下不会报错。
test2(new Father());
test2(new Son());
}
}
我是一个新手,请问一下上面的test1()和test2()方法为什么会出现这样的差异? 我的意思是同样都是继承关系,为什么Class<? extends Layer2> 可以限定参数类型,而Layer<? extends Layer2> 却不能? 谢谢回答!