是否有可以使用for-each迭代的类型XXX<T>
并包含T[]
和Iterable<T>
以便以下编译(假设类上下文和兼容方法{{ 1}})?
do_something
在Java 1.5中,我没有发现任何类型。也许在该语言的更高版本中? (我想这可能是一个常见问题解答。如果是噪音,很抱歉。快速谷歌搜索没有给出答案。)
答案 0 :(得分:6)
简短的回答是:不,没有类型涵盖两者。
简单的解决方案是将数组包装在List
中,然后使用
public void iterate_array(T[] items)
{
iterate(Arrays.asList(items));
}
public void iterate_array(Iterable<T> items)
{
for (T t : items)
do_something(t);
}
答案 1 :(得分:3)
这与关于数组和泛型的许多其他问题有关。数组和迭代(对象除外)没有超类型。这是一个问题,因为泛型和数组不是很兼容。除非出于性能原因需要原始数组(怀疑它),否则请坚持使用泛型集合。