中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java內部類的全限定名規律代碼示例

發布時間:2020-08-27 22:57:44 來源:腳本之家 閱讀:131 作者:三向板磚 欄目:編程語言

簡述:

由于最近遇到不少需要反射的類,而其中不乏內部類,在此總結一下內部類的全限定名的規律。

成員內部類

測試結果表明,無論成員內部類是否為靜態,其全限定名都使用如下命名方法:

包名.外部類名$內部類名

測試代碼:

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$2Inner 
在測試代碼的基礎上在交換main中functionA、B位置后的結果: 
classcom.test.InnerClassTest$2Inner 
classcom.test.InnerClassTest$1Inner 
在測試代碼基礎上交換functionA、B聲明位置的結果: 
classcom.test.InnerClassTest$2Inner 
classcom.test.InnerClassTest$1Inner

總結

以上就是本文關于Java內部類的全限定名規律代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依安县| 宜兰县| 田东县| 镇平县| 乐山市| 武冈市| 凯里市| 双峰县| 姜堰市| 平凉市| 唐河县| 遵化市| 信阳市| 关岭| 常熟市| 安多县| 怀宁县| 宝兴县| 宁蒗| 富裕县| 滁州市| 阳新县| 北海市| 巩留县| 莎车县| 安达市| 伊金霍洛旗| 永年县| 天镇县| 外汇| 噶尔县| 绿春县| 平塘县| 南雄市| 六安市| 墨玉县| 吴忠市| 罗江县| 五莲县| 刚察县| 修水县|