如何获得封闭课程?
我知道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
的ClassLoader
加载它:
javac的命名方案是
:
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"); }