如何获得封闭课程?

我知道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]

如果您知道匿名类的命名方案,可以尝试使用RootClassLoader加载它:

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"); }