List<Object>
和List<String>
是同种类型List
,只是泛型实参不同.
方法参数中,泛型类型必须相同
void print(ArrayList<Object> c) {
for (Object o : c)
System.out.println(o);
}
ArrayList<String> list = new ArrayList<String>();
print(list); // error 因为print方法参数要求泛型类型是Object,但是却传入了String
泛型类型相同,而参数类型又有继承关系(Collection
是List
的父类,则可以
void print(Collection<Object> c) {
for (Object o : c)
System.out.println(o);
}
List<Object> list = new ArrayList<Object>();
print(list); // fine
参考:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#FAQ102