Java Static Inner Class <Br /> Définir une classe intérieure en tant que classe statique est essentiellement la même que la définition d'autres classes que les classes statiques, et les règles de référence sont fondamentalement les mêmes. Cependant, les détails sont encore très différents. Plus précisément, il existe principalement les domaines suivants pour attirer l'attention de tous les développeurs de programmes.
(1) D'une manière générale, si une classe interne n'est pas définie comme une classe intérieure statique, elle ne peut pas être définie comme une variable de membre statique et une méthode de membre statique lors de la définition des variables de membre ou des méthodes membre. Autrement dit, les membres statiques ne peuvent pas être déclarés dans des classes intérieures non statiques.
(Ii) Généralement, les classes externes non statiques peuvent accéder aux variables des membres et aux méthodes de leurs classes externes à volonté (y compris les méthodes déclarées privées). limites. Une classe intérieure statique ne peut pas accéder aux variables et méthodes des membres non statiques de sa classe externe.
(3) Lors de la création d'une classe interne de membre non statique dans une classe, il y a une disposition obligatoire, c'est-à-dire que les cas de classes internes doivent être liés à des instances de classes externes. Ensuite, vous devez définir une classe intérieure statique dans une classe externe, et vous n'avez pas besoin d'utiliser le mot-clé nouveau pour créer une instance de la classe intérieure. Autrement dit, lors de la création d'un objet interne d'une classe statique, des objets de sa classe externe ne sont pas nécessaires.
Java utilise la classe interne suivante lors de l'implémentation de LinkedList:
Classe publique LinkedList <E> étend AbstractSesentialList <e> implémente la liste <e>, deque <e>, Clonable, java.io.serializable {............ classe statique privée en try <e> {E élément; entrée <e> Suivant; OUS précédent;}} Entrée privée <e> addBefore (e e, entrée <e> Entrée) {Entry <e> NewEntry = new Entry <e> (e, entrée, entrée.Previous); ;
Voici l'utilisation typique des classes intérieures statiques
Classe d'outils de synchronisation Java
/ ** * Plusieurs threads doivent être démarrés pour importer des données d'interface dans la cible en lots. qui est l'essence du problème de la synchronisation inter-threads. Cela permet de terminer avant de terminer un ensemble d'opérations en cours d'exécution dans d'autres threads. * Initialisez le compte à rebours avec le décompte donné. Étant donné que la méthode à rebours () est appelée, la méthode * Await sera bloquée jusqu'à ce que le nombre de courant atteigne zéro. Après cela, tous les fils d'attente seront publiés et tous les appels ultérieurs à attendre seront retournés immédiatement. * Ce phénomène ne se produit qu'une seule fois - le nombre ne peut pas être réinitialisé (c'est très important). Si vous devez réinitialiser le décompte, envisagez d'utiliser CyclicBarrier. * Ce qui suit est un exemple simple pour simuler cette exigence. * Classe, son contenu de classe est relativement complexe ** / importer java.util.arraylist; <Integer> StrList = null; int k = 0; } public static void main (String args []) {boolean isEnd = true; . : ::::::::::::: 0 && Count <20) {CountdownLatch lancersIgnal = new Countdownlatch (1); ++ i) {nouveau thread (D.New Worker (startignal, Donesignal, i)). START ();} // Count Minus 1 Child Thread Working peut exécuter Startsignal.CountDown (); ) {Random R = new Random (); ();} while (strList.size () <= 0) {int pos = r.nextint (1000); Add (i); Le compte à rebours final Donesignal; Pour le thread principal pour exécuter le compte à rebours. ) {int start = (i) * (50/5); strList.get (i) + "---" + "supprimé");