使用反射检索方法内的类

new*_*bie 8 java oop reflection class local-class

class test {
    public static void main(String[] args) {
         new test();
    }
    void method() {
         class inside {
              int a;
              void methodinside() {}
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用反射声明类:

Class c = Class.forName("test");
Class[] cls = c.getDeclaredClasses();
for(Class cl : cls)
     System.out.println(cl.getName());
Run Code Online (Sandbox Code Playgroud)

但是,我的程序找不到class inside.

Raz*_*zib 1

getDeclaredClasses()方法返回(来自javadoc)-

Class 对象的数组,反映声明为此 Class 对象所表示的类的成员的所有类和接口。这包括公共、受保护、默认(包)访问以及类声明的私有类和接口,但不包括继承的类和接口。

所以看起来它不会返回您声明的任何内部类。这就是为什么你在 的数组中什么也得不到的原因Class cls