Brève description:
Depuis que j'ai rencontré de nombreuses classes qui ont besoin de réflexion récemment, et il y a de nombreuses classes internes parmi elles. Ici, je résumerai les règles des noms pleinement qualifiés des classes internes.
Classe interne membre
Les résultats des tests montrent que, que la classe interne à l'intérieur du membre soit statique ou non, son nom entièrement qualifié est utilisé avec la méthode de dénomination suivante:
Nom du package. Nom de classe externe $ Nom de la classe interne
Code de test:
package com.test; classe publique InnerClasstest {classe statique Staticinner {} classe inner {} public static void main (string [] args) {staticinner si = new staticinner (); inner in = new Innerclasstest (). new Inner (); System.out.println (si.getClass ()); System.out.println (in.getClass ());}}Résultat d'impression:
classcom.test.innerclasstest $ staticinner
classcom.test.innerclasstest $ inner
Classe interne anonyme
Les noms entièrement qualifiés des classes internes anonymes respectent les règles suivantes:
Nom du package. Entier positif commençant par le nom de classe externe 1 $ - organisé par ordre de charge
Code de test
Package com.test; public class Innerclasstest {static objet statichlass = nouvel objet () {}; objet statique staticblockanclass; objet statique {new objet () {}; objet Blockanclass; {blockanclass = nouveau objet () {};} public voide; args) {innerclasstest functionclass = new InnerClasstest () {}; System.out.println (staticlass.getClass ()); System.out.println (staticlockanclass.getClass ()); InnerClasstest test = new InnerclasstSest (); System.out.println (test.anclass.getClass ()); System.out.println (test.blockanclass.getClass ()); System.out.println (FunctionClass.getClass ());}} Résultat d'impression:
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 $
Cours internes locaux
Les noms entièrement qualifiés des classes internes locales sont utilisées comme suit:
Nom du package. Le nom de classe externe $ est suivi d'un entier positif commençant par 1 suivi d'un nom de classe locale - où la partie numérique est l'ordre dans lequel la classe locale apparaît dans le contexte de la classe externe
Code de test
Package com.test; classe publique Innerclasstest {public static void main (String [] args) {functiona (); functionB ();} public static void functiona () {class inner {}; System.out.println (new Inner (). GetClass ());} public static functionb () {classe inners inne {}; système Inner (). GetClass ());}} L'exemple ci-dessus imprime le résultat:
classcom.test.innerclasstest 1 de moins
classcom.test.innerclasstest 2 pouces
Sur la base du code de test, le résultat après avoir échangé les positions fonctiona et b dans le principal:
classcom.test.innerclasstest 2 pouces
classcom.test.innerclasstest 1 de moins
Le résultat de l'échange des emplacements des déclarations fonctiona et B basées sur le code de test:
classcom.test.innerclasstest 2 pouces
classcom.test.innerclasstest 1 de moins
Résumer
Ce qui précède est l'intégralité du contenu de cet article sur l'exemple de code de règle de nom entièrement qualifié des classes internes Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!