Breve descripción:
Dado que he encontrado muchas clases que necesitan reflexión recientemente, y hay muchas clases internas entre ellas. Aquí resumiré las reglas de los nombres totalmente calificados de las clases internas.
Clase interna del miembro
Los resultados de la prueba muestran que, independientemente de si la clase interna dentro del miembro es estática o no, su nombre totalmente calificado se usa con el siguiente método de nombres:
Nombre del paquete. Nombre de clase EXTERNAL $ Nombre de clase interna
Código de prueba:
paquete com.test; public class innerclasSstest {static class staticInner {} class interner {} public static void main (string [] args) {staticInner si = new staticInner (); inner in = new innerClasStest (). New stating Inner (); system.out.println (si.getclass ()); system.out.println (in.getClass ());}}Resultado de impresión:
classcom.test.innergclasstest $ staticInner
classcom.test.innergclasstest $ Inner
Clase interna anónima
Los nombres totalmente calificados de las clases internas anónimas cumplen con las siguientes reglas:
Nombre del paquete. Integer positivo que comienza con el nombre de clase externa $ 1 - Ordenado en orden de carga de clase
Código de prueba
paquete com.test; public class InnClasSStest {static Object staticanClass = new Object () {}; static object staticblockanClass; static {staticblockanClass = new New () {};} objeto anclass = nuevo objeto () {}; objeto blockanclass; {blockanclass = new object ()};}; args) {innerClasStest functClass = new InnerclasStest () {}; System.out.println (staticanclass.getClass ()); System.out.println (staticblockanCLass.getClass ()); innerclasStest test = new InnerClasStest (); System.out.println (test.anclass.getClass ()); system.out.println (test.blockanclass.getClass ()); system.out.println (functlass.getClass ();}}}} Resultado de impresión:
clase com.test.innergclasstest $ 1
clase com.test.innergclasstest $ 2
clase com.test.innergclasstest $ 3
clase com.test.innergclasstest $ 4
clase com.test.innergclasstest $ 5
Clases internas locales
Los nombres totalmente calificados de las clases internas locales se utilizan de la siguiente manera:
Nombre del paquete. El nombre de clase externa $ es seguido por un entero positivo que comienza con 1 seguido de un nombre de clase local, donde la parte numérica es el orden en que la clase local aparece en el contexto de la clase externa
Código de prueba
paquete com.test; public class InnClasSStest {public static void main (string [] args) {functionA (); functionB ();} public static void functionA () {class Inner {}; system.out.println (new Inner (). Inner (). GetClass ());}} El ejemplo anterior imprime el resultado:
classcom.test.innergclasstest $ 1inner
classcom.test.innergclasstest $ 2inner
Según el código de prueba, el resultado después de intercambiar las posiciones funciones y B en Main:
classcom.test.innergclasstest $ 2inner
classcom.test.innergclasstest $ 1inner
El resultado del intercambio de las ubicaciones de las declaraciones Function y B basadas en el código de prueba:
classcom.test.innergclasstest $ 2inner
classcom.test.innergclasstest $ 1inner
Resumir
Lo anterior es todo el contenido de este artículo sobre el ejemplo de código de regla de nombre totalmente calificado de las clases internas de Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!