什么是“:”在这个初学者java示例程序中使用泛型?

时间:2011-05-18 02:23:06

标签: java loops foreach

好的,所以我需要帮助了解一些事情。我理解“?:”是如何一起使用的,但是阅读一些初学Java的东西,我看到这种情况在一些地方突然出现。最近才是......

public static <U> void fillBoxes(U u, List<Box<U>> boxes) {
    for (Box<U> box : boxes) {
        box.add(u);
    }
}

我感到困惑的是“:”究竟是做什么的。任何帮助,将不胜感激。我在Oracle网站的页面上查看此示例,该网站位于http://download.oracle.com/javase/tutorial/java/generics/genmethods.html

4 个答案:

答案 0 :(得分:5)

这是Java的for-each循环结构。它与泛型本身无关,或者:不能与泛型一起使用。这是简写​​:for every type box in the collection named boxes do the following...

这是link to the official documentation

更简单的代码示例:(而不是管理执行int数组求和的泛型)

int[] intArray = {1,5,9,3,5};
int sum = 0;
for (int i : intArray) sum += i;
System.out.println(sum);
  

输出:23

答案 1 :(得分:2)

这是for循环的“foreach”形式。它是用于在集合上获取迭代器并迭代整个集合的语法糖。

这是写下这样的东西的捷径:

for (Iterator<Box<U>> it = boxes.iterator(); it.hasNext(); ) {
    Box<U> box = it.next();
    box.add(u);
}

有关详细信息,请参阅this Oracle page,其中详细讨论了“foreach”循环。

答案 2 :(得分:1)

它用于迭代容器,在本例中为List。它为boxes变量中的每个对象执行一次循环。

答案 3 :(得分:1)

这是Java 1.5中添加的增强的for-each循环,可以有效地迭代集合的元素。

Java doc guide本身提供了更详细的说明.http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html