Java内部クラスの全限定定名法則コードの例
2866 ワード
簡単な説明:
最近反射を必要とするクラスが少なくないため,内部クラスも少なくないが,ここでは内部クラスの全限定名の法則をまとめる.
メンバーの内部クラス
テストの結果、メンバーの内部クラスが静的であるかどうかにかかわらず、その全限定名には次の名前付け方法が使用されます.
包名外部クラス名$内部クラス名
テストコード:
印刷結果:
classcom.test.InnerClassTest$StaticInner classcom.test.InnerClassTest$Inner
匿名の内部クラス
匿名内部類の全限定定名は以下の法則を満たす.
包名外部クラス名$が1から始まる正の整数-クラスのロード順に並べ替えられます.
テストコード
印刷結果:class com.test.InnerClassTest$1 class com.test.InnerClassTest$2 class com.test.InnerClassTest$3 class com.test.InnerClassTest$4 class com.test.InnerClassTest$5
ローカル内部クラス
ローカル内部クラスのフルネームには、次の名前が使用されます.
包名外部クラス名$は、1から始まる正の整数の後にローカルクラス名と続く-数値部分は、外部クラスコンテキストに局所クラスが現れる前後の順序である
テストコード
前例の印刷結果:
classcom.test.InnerClassTest$1Inner classcom.test.InnerClassTest$2 Innerはテストコードに基づいてmain中のfunctionA,Bの位置を交換した結果:classcom.test.InnerClassTest$2Inner classcom.test.InnerClassTest$1 Innerはテストコードに基づいてfunctionA、B宣言位置を交換した結果:classcom.test.InnerClassTest$2Inner classcom.test.InnerClassTest$1Inner
まとめ
以上,Java内部クラスの全限定定名法則コードの例について述べたすべての内容であり,皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!
最近反射を必要とするクラスが少なくないため,内部クラスも少なくないが,ここでは内部クラスの全限定名の法則をまとめる.
メンバーの内部クラス
テストの結果、メンバーの内部クラスが静的であるかどうかにかかわらず、その全限定名には次の名前付け方法が使用されます.
包名外部クラス名$内部クラス名
テストコード:
package 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から始まる正の整数-クラスのロード順に並べ替えられます.
テストコード
package com.test;
public class InnerClassTest {
static Object staticAnClass = new Object(){
}
;
static Object staticBlockAnClass;
static {
staticBlockAnClass = new Object(){
}
;
}
Object anClass = new Object(){
}
;
Object blockAnClass;
{
blockAnClass = new Object(){
}
;
}
public static void main(String[] args) {
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());
}
}
印刷結果:class com.test.InnerClassTest$1 class com.test.InnerClassTest$2 class com.test.InnerClassTest$3 class com.test.InnerClassTest$4 class com.test.InnerClassTest$5
ローカル内部クラス
ローカル内部クラスのフルネームには、次の名前が使用されます.
包名外部クラス名$は、1から始まる正の整数の後にローカルクラス名と続く-数値部分は、外部クラスコンテキストに局所クラスが現れる前後の順序である
テストコード
package 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 void functionB() {
class Inner {
}
;
System.out.println(new Inner().getClass());
}
}
前例の印刷結果:
classcom.test.InnerClassTest$1Inner classcom.test.InnerClassTest$2 Innerはテストコードに基づいてmain中のfunctionA,Bの位置を交換した結果:classcom.test.InnerClassTest$2Inner classcom.test.InnerClassTest$1 Innerはテストコードに基づいてfunctionA、B宣言位置を交換した結果:classcom.test.InnerClassTest$2Inner classcom.test.InnerClassTest$1Inner
まとめ
以上,Java内部クラスの全限定定名法則コードの例について述べたすべての内容であり,皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!