我有以下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();
}
}
关于java - 如何在 Java 中加载嵌套类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828884/