好的关于 javas 泛型、可迭代和 for-each 循环的问题。问题是,如果我声明我的“测试”类没有类型,我会丢失所有函数的所有通用信息,并且 for-each 根本不喜欢这样。
例子
public class Test<T> implements Iterable<Integer>{
public Test() {}
public Iterator<Integer> iterator() {return null;}
public static void main(String[] args) {
Test t = new Test();
//Good,
//its returning an Iterator<object> but it automatically changes to Iterator<Integer>
Iterator<Integer> it = t.iterator();
//Bad
//incompatable types, required Integer, found Object
for(Integer i : t){
}
}Untyped generic classes losing
}
当 'Test t' 没有类型时,'iterator()' 函数返回 'iterator' 而不是 'iterator < Integer >'。
我不确定它背后的原因,我知道一个解决方法就是在 'Test < 上使用通配符?> t = 新测试()'。然而,这是一个不太理想的解决方案。
他们有什么方法可以只编辑类声明及其函数并让 for each 循环工作无类型?