Что произойдет при выполнении следующего кода ?

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Test<T> implements Iterable<T>{   // 1

    private List<T> list = new ArrayList<T>();

    public void addList(T... ts) {
        Collections.addAll(list, ts); 
    }

    public static void main(String... args) {
        Test<String> t  = new Test<String>();  
        t.addList("Hello", "world", "!");      
        for (String str : t) {                 // 2
            System.out.print(str + " ");
        }
    }

    public Iterator<T> iterator() {
        return new Iterator() {                // 3               

            private int index = 0;

            public boolean hasNext() {
                return index < list.size();
            }

            public Object next() {
                return list.get(index++);
            }

            public void remove() {
                throw new UnsupportedOperationException("unsupported operation");
            }
        };
    }
}
Explanation
Интерфейсы Iterable и Iterator реализованы верно поэтому ошибок в строках 1 и 3 нету. В for-each могут бытьи использованы классы реализующие интерфейс Iterable, поэтому в строке 2 ошибка компиляции отсутствует.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты