如何在Java中加载嵌套类?

我有以下java代码:

public class CheckInnerStatic { private static class Test { static { System.out.println("Static block initialized"); } public Test () { System.out.println("Constructor called"); } } public static void main (String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { System.out.println("Inside main"); Class.forName("Test"); // Doesn't work, gives ClassNotFoundException //Test test = new Test(); // Works fine } } 

为什么class.forName("Test")在这里工作,而下一行工作正常?

使用Outer$Nested (无论嵌套类是否为静态)

 public class CheckInnerStatic { private static class Test { static { System.out.println("Static block initialized"); } public Test () { System.out.println("Constructor called"); } } public static void main (String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { System.out.println("Inside main"); Class cls = Class.forName("CheckInnerStatic$Test"); //Test test = new Test(); } } 

您需要使用完全限定的类名,即yourpackage.CheckInnerStatic$Test (假设您定义了一个包,否则跳过该部分)。

 Class innerClass = Class.forName("com.foo.OuterClass$InnerClass");