私はよくわからない奇妙な現象に直面しています。他のいくつかのクラスによって拡張された抽象クラスがあります。抽象クラスは特別なコレクションの一種であり、それに適合するネストされた抽象反復子クラスがあります。抽象コレクション クラスを拡張するすべてのクラスには、元の抽象反復子を拡張するネスト反復子クラスもあります。
抽象クラスは次のようなものです。
public abstract class AbstractMultiCollection<T> {
public AbstractMultiCollection() {
...
}
MultiIterator<T> iterator();
public abstract class AbstractMultiIterator {
public AbstractMultiIterator() {
...
}
拡張クラスは次のようなものです。
public class MajorityMultiCollection<T> extends AbstractMultiCollection<T> {
...
public MultiIterator<T> iterator() {
return new MajorityIterator();
}
...
public class MajorityIterator extends AbstractMultiIterator {
public MajorityIterator() {
super();
...
}
public T next() {
...
}
簡単に言えば、コレクションは抽象コレクションを拡張し、そのネストされた反復子はネストされた抽象反復子を拡張します。
理解できない問題が 2 つあります。説明をいただければ幸いです。
- コードをデバッグすると、「return new MajorityIterator();」行は、Eclipseデバッガーで「Source Not Found」エラーと「ClassNotFound」例外、および理解できない「ClassLoaderExt」例外の束を発生させます。
- すべての「MajorityIterator」には、彼が属するコレクションを含む 2 つの「This$0」フィールドがあることに気付きました。1 つは最初は null ですが、「super();」を呼び出すとコレクションを受け取ります。ビルダー。
この理由を見つけることができませんでした。誰か明確にできますか? 前もって感謝します!