今日在看到Enumeration 借口的源码时发现,Enumeration 接口的asIterator 方法返回了一个迭代器,并使用匿名内部类(实现接口的匿名内部类)。对迭代器中的方法进行了实现
default Iterator<E> asIterator() {
return new Iterator<>() {
@Override public boolean hasNext() {
return hasMoreElements();
}
@Override public E next() {
return nextElement();
}
};
}
使用Enumeration的方法对迭代器的方法进行了重写。这里在匿名内部类中使用了外部类的方法。最下我认为应该是使用 外部类名.this.方法名 的方式进行调用, 因为只写方法名,如果内部类也有相同的方法,则会调用内部类的方法,如果内部类没有相应的方法,则会调用外部类的方法,应该是编译器进行了相应的工作。