java - Outer and Inner class and static methods -


i understand inner class it's non-static , static method outer class can't reference it.

i have code, doesn't work, , understand why doesn't work.

class outerclass {     class innerclass{}     public static void outhermethod() {         innerclass = new innerclass();     } } 

but have other code, work, don't understand why it's different first one. why work?

class outerclass {     class innerclass{}     public static void outhermethod() {         innerclass = new outerclass.new innerclass();     } } 

thanks in advance!

edit: it's not duplicated because isn't same question. i'm not asking static nested classes, i'm asking static methods , inner classes

an inner class requires instance of enclosing class in order instantiated.

a static method of outerclass doesn't have instance of outerclass, can't create instance of innerclass without supplying enclosing instance (of outerclass).

innerclass = new innerclass(); 

would work within instance method of outerclass.

innerclass = new outerclass().new innerclass(); 

works within static method since creating instance of outerclass , use enclosing instance instance of innerclass.


Comments