I have the following java code:
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
}
}
Why doesn't the class.forName("Test")
work here while the next line works fine?
Use
Outer$Nested
(regardless if nested class is static or not)You need to use the fully qualified class name, i.e.
yourpackage.CheckInnerStatic$Test
(assuming you defined a package, otherwise skip that part).