Java Static Inner Clase <Br /> Definición de una clase interna como clase estática es básicamente lo mismo que definir otras clases como clases estáticas, y las reglas de referencia son básicamente las mismas. Sin embargo, los detalles siguen siendo muy diferentes. Específicamente, existen principalmente las siguientes áreas para atraer la atención de todos los desarrolladores de programas.
(1) En términos generales, si una clase interna no se define como una clase interna estática, entonces no se puede definir como una variable de miembro estático y un método de miembro estático al definir variables de miembro o métodos de miembros. Es decir, los miembros estáticos no pueden ser declarados en clases internas no estáticas.
(Ii) En general, las clases externas no estatales pueden acceder a las variables y métodos de los miembros de sus clases externas a voluntad (incluidos los métodos declarados como privados). limitaciones. Una clase interna estática no puede acceder a variables y métodos miembros no estatales de su clase externa.
(3) Al crear una clase interna de miembro no estático en una clase, hay una disposición obligatoria, es decir, las instancias de clases internas deben estar vinculadas a instancias de clases externas. Luego debe definir una clase interna estática en una clase externa, y no necesita usar la palabra clave nueva para crear una instancia de la clase interna. Es decir, al crear un objeto interno de una clase estática, no son necesarios objetos de su clase externa.
Java usa la siguiente clase interna al implementar LinkedList:
Public Class LinkedList <E> extiende AbstractSequentialList <E> Lista de implementos <E>, deque <e>, Clonable, java.io.serializable {............ Clase estática privada en prueba <E> {E Elemento <e> Siguiente; OUS anterior; ;
Aquí está el uso típico de las clases internas estáticas
Clase de herramienta de sincronización de Java
/** * Se deben comenzar a importar múltiples hilos para importar datos de interfaz en el objetivo en lotes. que es la esencia del problema de * sincronización entre hilos. Eso permite que se complete antes de completar un conjunto de * operaciones que se ejecutan en otros hilos. * Inicialice CountdownLatch con el recuento dado. Dado que se llama al método Countdown (), el método * espera se bloqueará hasta que el recuento de corriente alcance cero. Después de eso, se lanzarán todos los hilos de espera y todas las llamadas posteriores a esperar se devolverán de inmediato. * Este fenómeno solo ocurre una vez: el recuento no se puede restablecer (esto es muy importante). Si necesita restablecer el recuento, considere usar CyclicBarrier. * El siguiente es un ejemplo simple para simular este requisito. * Clase, su contenido de clase es relativamente complejo* **/ importar java.util.ArrayList; <integer> strlist = null; } public static void main (string args []) {boolean isend = true; )>:: :::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::: para::: ::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::: no 5); startsignal.countDown (); try {new Thread (new Runnable () {Random r = new Random (); @Override Public Void Run () {Try {// Los bloques de hilo principales saben que todos los hilos de niños claros donesignal donesignal. Await (); = pos; <pos+50; }} El trabajador de la clase Runnable {CountdownLatch final inicial i; } // return; ;