I know Class.getDeclaredClasses()
可以获取它声明的所有类,但不包括匿名类。
我想知道有没有办法通过封闭类获取所有封闭类?例如,我想获取定义在中的所有封闭类Root
用于测试目的。
class Root{
void run(){
Runnable task = new Runnable(){
public void run(){}
};
task.getClass().getEnclosingClass();// return Root.class
// but I want to get all enclosed class via Root.class, for example:
// Root.class... == task.getClass()
}
}
预期结果是:[class of task]
.
如果您知道匿名类的命名方案,您可以尝试使用以下命令加载它Root
's ClassLoader
:
javac 的命名方案是<enclosing_class_name>$<anonymous_class_number>
:
Class<?> enclosing = Root.class;
try{
Class<?> anon1 = enclosing.getClassLoader().loadClass(enclosing.getName() + "$1");
System.out.println(anon1); // prints: class Root$1
} catch (ClassNotFoundException e) {
System.out.println("no anonymous classes");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)