0

非静的内部クラスとして定義されている LinkedList の ListIterator の Java Doc を読んでいます。なぜ静的クラスではないのですか? このデータ構造は、LinkedList のすべてのインスタンス間で共有されるべきではありませんか? 私は混乱しています。ありがとう。

private class ListItr implements ListIterator<E>{

}
4

2 に答える 2

2

Javaの静的クラスと非静的クラスと静的メンバーと非静的メンバーの違いについて少し誤解していると思います。静的クラスと非静的クラスの違いは、非静的クラスには暗黙的なメンバーが保持されていることです。静的クラスにはそのような暗黙的な参照はありませんが、外部クラスへの参照。どちらの種類の内部クラスもすべてのインスタンスで共有されます。外部クラスのインスタンスに関連付けられているのは、内部クラスのインスタンスです。

これはまさに反復子に求められるものです。各反復子は、反復するコレクションのインスタンスに接続されているため、内部クラスを非静的にすることで、この参照を暗黙的に保持することは完全に理にかなっています。

于 2013-02-25T02:52:35.993 に答える
0

まず、データ構造でListItrなく、内部クラスです。ListIteratorインスタンスがこのクラスのインスタンスを自動的に共有することはありません。内部クラスListItrはそれを囲むクラスのデータにアクセスできるため、データのコレクションに対して反復子を実装するのに最適です。静的クラスにはこのレベルのアクセス権がないため、反復子の実装としてははるかに不適切な選択になります。

于 2013-02-25T02:55:49.500 に答える