Java statische innere Klasse <BR /> Definieren einer inneren Klasse als statische Klasse ist im Grunde genommen mit der Definition anderer Klassen als statische Klassen, und die Referenzregeln sind im Grunde die gleichen. Die Details sind jedoch immer noch sehr unterschiedlich. Insbesondere gibt es hauptsächlich die folgenden Bereiche, die die Aufmerksamkeit aller Programmeentwickler auf sich ziehen.
(1) Wenn eine innere Klasse nicht als statische innere Klasse definiert ist, kann sie bei der Definition von Mitgliedsvariablen oder Mitgliedsmethoden nicht als statische Mitgliedsvariable und eine statische Mitgliedsmethode definiert werden. Das heißt, statische Mitglieder können nicht in nicht statischen inneren Klassen deklariert werden.
(Ii) Nichtstatische externe Klassen können nach Belieben auf Mitgliedervariablen und -Methoden zugreifen (einschließlich der als privaten Methoden, wenn eine innere Klasse als statisch deklariert ist, enthält viele externe Klassen, einschließlich seiner eigenen. Einschränkungen. Eine statische innere Klasse kann nicht auf nicht statische Mitgliedsvariablen und -methoden ihrer externen Klasse zugreifen.
(3) Bei der Erstellung einer nicht statischen Mitgliedsklasse in einer Klasse gibt es eine obligatorische Bestimmung, dh Instanzen interner Klassen müssen an Instanzen externer Klassen gebunden sein. Dann müssen Sie eine statische innere Klasse in einer externen Klasse definieren, und Sie müssen das Schlüsselwort nicht verwenden, um eine Instanz der inneren Klasse zu erstellen. Das heißt, beim Erstellen eines internen Objekts einer statischen Klasse werden Objekte seiner externen Klasse nicht benötigt.
Java verwendet die folgende interne Klasse bei der Implementierung der LinkedList:
Public Class LinkedList <E> erweitert abstraktsequentialList <E> implementiert die Liste <E>, Deque <e>, klonbar, java.io.Serializable {............ private statische Klasse en Try <E> {E -Element; Vorherige OUS; ;
Hier ist die typische Verwendung statischer innerer Klassen
Java Synchronization Tool Class
/** * Mehrere Threads müssen in Stapeln in das Ziel importiert werden. Das ist das Problem der Synchronisation zwischen den Threads. Dadurch kann es abgeschlossen werden, bevor eine Reihe von * Operationen in anderen Threads ausgeführt werden. * Initialisieren Sie Countdownlatch mit der angegebenen Anzahl. Da die Methode countdown () aufgerufen wird, wird die * Warte -Methode blockiert, bis die aktuelle Anzahl Null erreicht. Danach werden alle wartenden Themen veröffentlicht und alle nachfolgenden Anrufe, die darauf warten, sofort zurückgegeben zu werden. * Dieses Phänomen tritt nur einmal auf - die Anzahl kann nicht zurückgesetzt werden (dies ist sehr wichtig). Wenn Sie die Anzahl zurücksetzen müssen, sollten Sie die Verwendung von Cyclicbarrier in Betracht ziehen. * Das Folgende ist ein einfaches Beispiel, um diese Anforderung zu simulieren. * Seine Klasseninhalte ist relativ komplex* **/ importieren Sie Java.util.ArrayList; <Neger> STRLIST = NULL; } public void main (String args []) {boolean isend = true; ) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::: 0 && count <20) {Countdownlatch startssignal = neuer Countdownlatch (1); ++ i) {neuer Thread (D.New Worker (startsignal, Donesignal, i)). ) {Random r = new random (); (); add (i);}}}}}) Final Countdownlatch Donesignal; Damit der Hauptförderer startet. ) {int start = (i)*(50/5); STRLST.get (i) + "---" + "gelöscht");}}}}}