Viv*_*vek 15 java static inner-classes
我有以下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
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不在class.forName("Test")这里工作,而下一行工作正常?
MeB*_*Guy 30
使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
Class innerClass = Class.forName("com.foo.OuterClass$InnerClass");
Run Code Online (Sandbox Code Playgroud)