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() 返回得到的内部类实例,仅用来显示和查看,而不能修改;