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

问题描述:

好吧,所以我需要帮助理解的东西。我了解“?:”如何一起使用,但是阅读了一些Java开始的东西,我发现这种情况在几个地方出现。最近是这样...什么是“:”在这个初学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

这是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

+0

太感谢了,送我正确的方向。 – CrazyGrunt 2011-05-18 02:26:46

+1

+1。只是想补充一点,当我向自己读取代码时(正如您在答案中所做的那样),我喜欢将“:”视为“in”。 – 2011-05-18 02:45:56

+0

@Ian:我实际上会抛出一个C#示例,显示in关键字...更好地放置在这里,但不要混淆答案。 C#版本:'foreach(int i in collection_of_ints){/ * do stuff * /}' – 2011-05-18 02:52:13

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

这是一个快捷方式写一样的东西:

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

更多看到this Oracle page其中特别谈到了“foreach”循环。

它用于遍历容器,在该案例列表。它为boxes变量中的每个对象执行一次循环。

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

进一步详细说明可在Java文档指南itself.http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html