如何在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");