public static void Show(List<Object> c) {
for (Object e : c) {
System.out.println(e);
}
}
public static void main(String[] args) {
List<Object> list = null;
List<String> list1 = null;
list = list1;//编译不通过,因为list1不是list的子类
Show(list);//编译通过
Show(list1);//编译不通过
}
但是将Show()方法的static关键字去掉后采用对象来调用Show(),结果就都能通过
public void Show(List<Object> c) {
for (Object e : c) {
System.out.println(e);
}
}
public static void main(String[] args) {
Exercise e = new Exercise();
List<Object> list = null;
List<String> list1 = null;
e.Show(list);//编译通过,能够正常打印
e.Show(list1);//编译也能通过,也能正常打印
}
为什么通过对象调用Show()就感觉泛型能转换: