Что ":" делает в этой программе Java для начинающих, используя дженерики? - PullRequest
4 голосов
/ 18 мая 2011

Хорошо, мне нужна помощь, чтобы понять что-то. Я понимаю, как "?:" Используются вместе, но читая некоторые начальные 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 ]

5 голосов
/ 18 мая 2011

Это Java для каждой циклической конструкции. Он не имеет ничего общего с генериками как таковыми или: не предназначен для использования исключительно с генериками. Это сокращение, которое гласит: 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);

Выход: 23

2 голосов
/ 18 мая 2011

Это форма foreach цикла for. Это синтаксический сахар для получения итератора в коллекции и итерации по всей коллекции.

Это быстрый способ написать что-то вроде:

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

Подробнее см. эту страницу Oracle , в которой конкретно говорится о цикле "foreach".

1 голос
/ 18 мая 2011

Это расширенный цикл for-each, добавленный в Java 1.5 для эффективной итерации по элементам коллекций.

Более подробное объяснение доступно в самом руководстве Java doc. http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

1 голос
/ 18 мая 2011

Используется для перебора контейнера, в данном случае List.Он выполняет цикл один раз для каждого объекта в переменной boxes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...