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

Cra*_*unt 4 java foreach loops

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

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

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

Pau*_*sik 5

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

这是官方文档链接.

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

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

产量:23

  • 一个小注:这个答案的措辞暗示只有那些类型为"Box <U>"的对象才会被迭代; 实际上,它将迭代集合中的所有对象,并将每个对象隐式地转换为`Box <U>`.如果一直使用泛型,那么集合中的所有元素实际上都是"Box <U>"类型.我只提到这一点,因为新手可以解释它意味着`Box <U>`的类型是从`Object`s的集合中选择的. (2认同)