小编Ale*_*lov的帖子

使用对通用对象的无类型引用时,对成员类型集合的迭代失败

可能重复:
如果实例未分配泛型类型,则针对每个循环问题进行泛型

有人可以澄清为什么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)

java generics

11
推荐指数
1
解决办法
233
查看次数

标签 统计

generics ×1

java ×1