The semantics for creating instances of static nested classes/inner classes can be confusing. creating an instance of the inner class requires a reference to an instance of the enclosing class creating an instance of the static nested class does not require an instance of the enclosing class Here is an example which is a simple class that defines a static nested class and an inner class: public class EnclosingClass { private String name = "instance name"; private static String staticName = "static name"; public static void main(String[] args) { EnclosingClass enclosingClass = new EnclosingClass(); EnclosingClass.InnerClass innerClass = enclosingClass.new InnerClass(); EnclosingClass.StaticNestedClass staticNestedClass = new EnclosingClass.StaticNestedClass(); }
About Java and it's related concepts..