Java內(nèi)部類的全限定名規(guī)律代碼示例
簡(jiǎn)述:
由于最近遇到不少需要反射的類,而其中不乏內(nèi)部類,在此總結(jié)一下內(nèi)部類的全限定名的規(guī)律。
成員內(nèi)部類
測(cè)試結(jié)果表明,無(wú)論成員內(nèi)部類是否為靜態(tài),其全限定名都使用如下命名方法:
包名.外部類名$內(nèi)部類名
測(cè)試代碼:
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()); } }
打印結(jié)果:
classcom.test.InnerClassTest$StaticInner
classcom.test.InnerClassTest$Inner
匿名內(nèi)部類
匿名內(nèi)部類的全限定名滿足如下規(guī)律:
包名.外部類名$由1開(kāi)始的正整數(shù)-按照類裝載順序依次排列
測(cè)試代碼
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()); } }
打印結(jié)果:
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
局部?jī)?nèi)部類
局部?jī)?nèi)部類全限定名使用如下命名方式:
包名.外部類名$由1開(kāi)始的正整數(shù)后跟局部類名-其中數(shù)字部分是局部類在外部類上下文出現(xiàn)的先后順序
測(cè)試代碼
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()); } }
上例打印結(jié)果:
classcom.test.InnerClassTest$1Inner
classcom.test.InnerClassTest$2Inner
在測(cè)試代碼的基礎(chǔ)上在交換main中functionA、B位置后的結(jié)果:
classcom.test.InnerClassTest$2Inner
classcom.test.InnerClassTest$1Inner
在測(cè)試代碼基礎(chǔ)上交換functionA、B聲明位置的結(jié)果:
classcom.test.InnerClassTest$2Inner
classcom.test.InnerClassTest$1Inner
總結(jié)
以上就是本文關(guān)于Java內(nèi)部類的全限定名規(guī)律代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java如何向主函數(shù)main中傳入?yún)?shù)
這篇文章主要介紹了Java如何向主函數(shù)main中傳入?yún)?shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法示例
這篇文章主要介紹了Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法,簡(jiǎn)單描述了約瑟夫環(huán)問(wèn)題,并結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)約瑟夫環(huán)的具體操作技巧,需要的朋友可以參考下2017-09-09spring mvc4中相關(guān)注解的詳細(xì)講解教程
這篇文章主要給大家介紹了關(guān)于spring mvc4中相關(guān)注解的相關(guān)資料,其中詳細(xì)介紹了關(guān)于@Controller、@RequestMapping、@RathVariable、@RequestParam及@RequestBody等等注解的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06Java util.List如何實(shí)現(xiàn)列表分段處理
這篇文章主要介紹了Java util.List如何實(shí)現(xiàn)列表分段處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-0918個(gè)Java8日期處理的實(shí)踐(太有用了)
這篇文章主要介紹了18個(gè)Java8日期處理的實(shí)踐(太有用了),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Post請(qǐng)求參數(shù)是數(shù)組或者List時(shí)的請(qǐng)求處理方式
這篇文章主要介紹了Post請(qǐng)求參數(shù)是數(shù)組或者List時(shí)的請(qǐng)求處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05RocketMQ整合SpringBoot實(shí)現(xiàn)生產(chǎn)級(jí)二次封裝
本文主要介紹了RocketMQ整合SpringBoot實(shí)現(xiàn)生產(chǎn)級(jí)二次封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Spring?BeanDefinition收集過(guò)程示例詳解
這篇文章主要為大家介紹了Spring?BeanDefinition收集過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08