Java staticインナークラス<br />内部クラスを静的クラスとして定義することは、基本的に静的クラスとして他のクラスを定義するのと同じであり、参照ルールは基本的に同じです。ただし、詳細はまだ非常に異なります。具体的には、主にすべてのプログラム開発者の注目を集めるための次の領域があります。
(1)一般的に言えば、内部クラスが静的内部クラスとして定義されていない場合、メンバー変数またはメンバーメソッドを定義するときに静的メンバー変数および静的メンバーメソッドとして定義することはできません。つまり、静的メンバーは、非静的な内部クラスで宣言することはできません。
(ii)一般的に、非静的な外部クラスは、外部クラスのメンバー変数とメソッドにアクセスできます(個人として宣言された方法を含む)。制限。静的な内部クラスでは、非静的なメンバー変数とその外部クラスのメソッドにアクセスできません。
(3)クラスで非静的なメンバー内部クラスを作成する場合、必須の規定があります。つまり、内部クラスのインスタンスは、外部クラスのインスタンスに拘束される必要があります。次に、外部クラスで静的インナークラスを定義する必要があり、内側クラスのインスタンスを作成するために新しいキーワードを使用する必要はありません。つまり、静的クラスの内部オブジェクトを作成する場合、外部クラスのオブジェクトは必要ありません。
Javaは、LinkedListを実装するときに次の内部クラスを使用します。
Public Class LinkedList <e>拡張抽象的な順番<e> list <e>、deque <e>、cloneable、java.io.serializable {............ private static class en try <e> {e要素<e>次のエントリ、エントリ、エントリ<e>以前のout;} private entry <e> addbefore(enter <e> entry){enter <e> new entry <e>(e、entry、entry.previous.next = newentry ;
静的インナークラスの典型的な使用法です
Java同期ツールクラス
/** *バッチでターゲットにインターフェイスデータをインポートする必要があります。これは、過去2日間で *スレッドの同期の問題の本質ですこれにより、他のスレッドで実行されている一連の操作が完了することができます。 *指定されたカウントでCountDownLatchを初期化します。 CountDown()メソッドが呼び出されるため、現在のカウントがゼロになるまで *待機方法がブロックされます。その後、すべての待機スレッドがリリースされ、待機するためのすべての呼び出しはすぐに返されます。 *この現象は一度しか発生しません - カウントをリセットすることはできません(これは非常に重要です)。カウントをリセットする必要がある場合は、Cyclicbarrierの使用を検討してください。 *もちろん、この要件をシミュレートするための簡単な例です。 *クラスのコンテンツは、java.util.listをインポートします<integer> strlist = 0; } public void main(String args []){boolean isend = true; )> :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::づ品ですをつ回念です::::::::::: 0 && count <20){countdownlatch startsignal = new countdownlatch(1); ++ i){new Worker(startsignal、donesignal、i)。 ){ランダムr = new Random(); (); add(i)}}})最終的なdonesignal;メインスレッドは、countsignal.aw ait()を実行します){int start =(i)*(50/5); strlist.get(i) + "---" + "削除")}}}}