有这个课程
public class MyClass {
private List<Integer> list1 = new ArrayList<Integer>();
private List<String> list2 = new ArrayList<String>();
. . .
}
是否可以在类中实现Iterable
以使此代码有效?:
MyClass a = new MyClass();
for(Integer i: a) {
<do something with i>
}
for(String s: a) {
<do something with s>
}
让我澄清一下,我知道如何以其他方式进行迭代,即使我知道我可以为每个列表类型创建一个迭代器,我想知道这种特定的迭代形式是否可行。
答案 0 :(得分:2)
为了使其正常工作,您可以实现java.lang.Iterable接口并覆盖Iterable#iterator()
中的ClassA
方法,但之后只会编译其中一个循环,因为迭代将仅在 上应用于其中一个列表。
更好地为列表提供访问器,然后执行:
for(Integer i: a.getIntList()) {
<do something with i>
}
for(String s: a.getStringList()) {
<do something with s>
}
答案 1 :(得分:1)
您不能使用绑定类型列表提供泛型类型,因此您必须决定String
或Integer
- 或者让MyClass
通过方法公开这两个集合