What happens if the following code is executed?

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
The Iterable and Iterator interfaces are correctly implemented, hence lines 1 and 3 do not contain errors.
The Java for-each loop works with two types of objects: arrays of any type, and classes that implement the Iterable interface, which is our case, hence line 2 will not cause any errors.

Следи за CodeGalaxy

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

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