有人可以澄清为什么iterate1()编译器不接受(Java 1.6)?我不明白为什么iterate2()而且iterate3()好多了.
import java.util.Collection;
import java.util.HashSet;
public class Test<T> {
public Collection<String> getCollection() {
return new HashSet<String>();
}
public void iterate1(Test test) {
for (String s : test.getCollection()) {
// ...
}
}
public void iterate2(Test test) {
Collection<String> c = test.getCollection();
for (String s : c) {
// ...
}
}
public void iterate3(Test<?> test) {
for (String s : test.getCollection()) {
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译器输出:
$ javac Test.java …Run Code Online (Sandbox Code Playgroud)