簡単な説明:
私は最近反射が必要な多くのクラスに遭遇したので、それらの中には多くの内部クラスがあります。ここでは、内部クラスの完全に資格のある名前のルールを要約します。
メンバー内部クラス
テスト結果は、メンバー内の内部クラスが静的かどうかに関係なく、その完全な資格のある名前が次の命名方法で使用されることを示しています。
パッケージ名。Externalクラス名$内部クラス名
テストコード:
パッケージcom.test; public class innerclasstest {static class staticinner {} class 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());}}}印刷結果:
classcom.test.innerclasstest $ staticinner
classcom.test.innerclasstest $ inner
匿名の内部クラス
匿名の内部クラスの完全に資格のある名前は、次のルールを満たしています。
パッケージ名。外部クラス名から始まる正の整数$ 1-クラスの読み込みの順に配置
テストコード
パッケージcom.test; public class innerclasStest {static object staticanclass = new object(){}; static object staticblockanclass; static {staticblockanclass = new object(){};} anclass = new object = new object {){){); object blockanclass; {blockanclass = new object() {innerclasStest functionclass = 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(functionclass.getClass();}}}}印刷結果:
クラスcom.test.innerclasstest $ 1
クラスcom.test.innerclasstest $ 2
クラスcom.test.innerclasstest $ 3
クラスcom.test.innerclasstest $ 4
クラスcom.test.innerclasstest $ 5
ローカル内部クラス
ローカル内部クラスの完全に適格な名前は次のように使用されます。
パッケージ名。外部クラス名$の後には、1から始まる正の整数が続き、数値パーツは外部クラスのコンテキストでローカルクラスが表示される順序です。
テストコード
パッケージcom.test; public class innerclasstest {public static void main(string [] args){functiona(); functionb();} public static void functiona(){class inner {}; system.out.println(new inner()。getclass());} public static bunicb(){class inten {}; system out.; inner()。getClass());}}上記の例では、結果が印刷されています。
classcom.test.innerclasStest $ 1INNER
classcom.test.innerclasStest $ 2インナ
テストコードに基づいて、主に関数とBの位置を交換した後の結果:
classcom.test.innerclasStest $ 2インナ
classcom.test.innerclasStest $ 1INNER
テストコードに基づいて、functionaおよびb宣言の場所を交換した結果:
classcom.test.innerclasStest $ 2インナ
classcom.test.innerclasStest $ 1INNER
要約します
上記は、Java内部クラスの完全資格の名前ルールコードの例に関するこの記事の全体的な内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!