在Java中,通配符可以做常规泛型无法做到的事情吗?
我是Java的新手。在本文档中,他们给出了使用通配符的用例:
static void printCollection(Collection c) {
Iterator i = c.iterator();
for (int k = 0; k < c.size(); k++) {
System.out.println(i.next());
}
}
这是他们的解决方案:
static void printCollection(Collection<?> c) {
for (Object e : c) {
System.out.println(e);
}
}
但是我可以在没有通配符的情况下做同样的事情:
static <T> void printCollection(Collection<T> c) {
Iterator i = c.iterator();
for (int k = 0; k < c.size(); k++) {
System.out.println(i.next());
}
}
有人可以向我展示一个简单的用例,其中常规泛型不起作用,但通配符将起作用吗?
更新:这里的答案 什么时候在Java泛型中使用通配符?不要告诉我们需要通配符。事实上,情况恰恰相反。