Breve descrição:
Desde que encontrei muitas classes que precisam de reflexão recentemente, e há muitas classes internas entre elas. Aqui vou resumir as regras de nomes totalmente qualificados das classes internas.
Classe interna do membro
Os resultados dos testes mostram que, independentemente de a classe interna dentro do membro ser estática ou não, seu nome totalmente qualificado é usado com o seguinte método de nomeação:
Nome do pacote. Nome da classe External $ Nome da classe interna
Código de teste:
pacote com.test; public class InnerclasSstest {classe estática staticinner {} classe interna {} public static void main (string [] args) {staticinner si = new staticinner (); interno in = new innerClasstest (). novo Interno (); System.out.println (Si.getClass ()); System.out.println (in.getClass ());}}Resultado de impressão:
ClassCom.test.innerclasstest $ staticinner
ClassCom.test.innerclasstest $ interno
Classe interna anônima
Os nomes totalmente qualificados das classes internas anônimas atendem às seguintes regras:
Nome do pacote. Número inteiro positivo começando com o nome da classe externa $ 1 - organizado em ordem de carregamento de classe
Código de teste
pacote com.test; public class iNnerclasstest {objeto estático staticanclass = new object () {}; objeto estático staticblockanClass; static {staticblockanClass = new object () {};} objeto anclass = new object () {}; {) {};}; args) {innerClasstest functionClass = new innerClasSstest () {}; system.out.println (staticanclass.getclass ()); system.out.println (staticblockanClass.getclass ()); inerclasstest test = novo InerclasSstest (); System.out.println (test.anclass.getclass ()); system.out.println (test.blockanClass.getclass ()); system.out.println (functionClass.getClass ();}}}} Resultado de impressão:
classe com.test.innerclasstest $ 1
classe com.test.innerclasstest $ 2
classe com.test.innerclasstest $ 3
classe com.test.innerclasstest $ 4
classe com.test.innerclasstest $ 5
Classes internas locais
Os nomes totalmente qualificados das classes internas locais são usadas da seguinte forma:
Nome do pacote. O nome da classe externa $ é seguido por um número inteiro positivo começando com 1 seguido por um nome de classe local - onde a parte numérica é a ordem em que a classe local aparece no contexto da classe externa
Código de teste
pacote com.test; public class iNnerclasSstest {public static void main (string [] args) {functionA (); functionb ();} public static void functionA () {class interna {}; system.out.println (new inner (). Interno (). GetClass ());}} O exemplo acima imprime o resultado:
ClassCom.test.innerclasstest $ 1inner
ClassCom.test.innerclasstest $ 2inner
Com base no código de teste, o resultado depois de trocar as posições FunctionA e B em Main:
ClassCom.test.innerclasstest $ 2inner
ClassCom.test.innerclasstest $ 1inner
O resultado da troca da localização das declarações FunctionA e B com base no código de teste:
ClassCom.test.innerclasstest $ 2inner
ClassCom.test.innerclasstest $ 1inner
Resumir
O exposto acima é o conteúdo inteiro deste artigo sobre o exemplo de código de regra de nome totalmente qualificado das classes internas do Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!