NO IMAGE

1. 舉一個內部類的例項(jdk 中)

  • java Collection 容器的 iterator() 成員函式的實現,比如 ArrayList 內部的 iterator 的實現:

    public class ArrayList<E> {
    public Iterator<E> iterator() {
    return new Itr();
    }
    // 實現了 Iterator 介面的內部類
    private class Itr implements Iterator<E> {
    public boolean hasNext() {
    return cursor != size;
    }
    public E next() {
    ...
    }    
    }
    }
  • Arrays.asList

    public class Arrays {
    public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
    }
    // 這裡的 ArrayList 是內部類,未重寫 AbstractList 的 add 等會修改內部狀態的方法,
    // Arrays.asList 返回的內部類例項,僅用來顯示和檢視,而不能修改;
    private static class ArrayList<E> extends AbstractList<E> {
    }    
    }

    AbstractList 的 add 方法為:

        public void add(int index, E element) {
    throw new UnsupportedOperationException();
    }

    因此 Arrays.asList() 返回得到的內部類例項,僅用來顯示和檢視,而不能修改;