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$2inner
在测试代码的基础上在交换main中functiona、b位置后的结果:
classcom.test.innerclasstest$2inner
classcom.test.innerclasstest$1inner
在测试代码基础上交换functiona、b声明位置的结果:
classcom.test.innerclasstest$2inner
classcom.test.innerclasstest$1inner
总结
以上就是本文关于java内部类的全限定名规律代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
推荐阅读