这个问题在这里已经有答案了:
什么是原始类型?为什么不使用它(15个答案)
两年前关门了。
考虑下面的课程
class Foo<T> {
List<String> bar() { return null; }
}
如果我做一个这样的原始示例:
final Foo foo = new Foo();
我还是希望 foo.bar()
返回 List<String>
. 自 bar
独立于 T
. 但是,如果我这样做:
final List<String> strings = foo.bar();
我接到一个未经检查的任务
未选中的赋值:“java.util.list”到“java.util.list”。原因:“foo”有原始类型,所以条的结果被删除。
我知道上面写着 foo
被抹掉了,但为什么抹掉了 foo
同时删除 List<String>
至 List
?
目前我正在用 @SuppressWarnings("unchecked")
因为这对我来说毫无意义。
2条答案
按热度按时间arknldoa1#
“稀有”类型的规范已经太复杂了。为一个毫无意义的案例增加额外的复杂性是毫无意义的。
只需正确使用泛型,而不使用原始类型。
0sgqnhkj2#
如其他答案所述,使用“原始”类会丢失所有泛型,而不仅仅是类定义的泛型。解决方法是只使用通配符,它不关心类型,但保留泛型: