为什么 Java 泛型原始类在类型参数未指定时会擦除对象的所有泛型?
2022-09-01 23:46:17
如果我有一个类:
public class GenericClass<TBlah extends Number> {
public List<String> getList() {
return null;
}
}
当我尝试从另一个类中使用该方法时:
public class OtherClass {
public void test() {
GenericClass a = null;
for (String s : a.getList()) {
}
}
}
为什么返回 a 直到我将 for 循环上方的行更改为:a.getList()
List<Object>
GenericClass<Number> a = null;
在这一点上,a.getList() 返回一个它应该做的?List<String>
编辑:我不明白为什么指定的合约应该受到我如何声明我的变量“a”的影响。 总是返回一个,TBlah是什么并不重要。getList()
getList()
List<String>