【发布时间】:2010-12-03 04:30:28
【问题描述】:
如果有一个 Java 集合的实例可以携带原始类型、泛型数组和/或可迭代集合,我想将泛型数组视为可迭代集合,但是如何处理呢?例如以下伪java代码
List<?> list1;
list1.add(new int[2]);
list1.add(new String[3]);
list1.add(new ArrayList());
for (Object e : list1){
if (e instanceof Iterable){
//The int[2] and String[3] will not fall in this case that I want it be
//Iterate within e
}
}
请告知如何使 int[2] 和 String[3] 落入本案。
感谢和问候, 威廉
【问题讨论】:
-
我可能是错的(我经常是),但我想我提供了答案,您可以在不知道确切类型的情况下迭代泛型集合。
-
@Petro Semeniuk:您的解决方案有效,但它使数组成为一种特殊情况并以不同方式对待它们。原始问题的精神(至少在我的解释中)是我们如何避免这样做。我们如何才能使数组的行为与我们的其他 Iterable 一样,而不单独对待它们。
-
@Asaph。谢谢。我真的误解了原来的问题。将数组包装到集合中确实是最好的解决方案。干杯!