What is static nested class and usage in Java

Question -What is static nested class and usage in Java

Solutions– Many developers are confused and telling static nested class as static inner class.But in java, there is no static inner class. 😮

Ok.First we understand ,

what is inner class – inner class or nested class is a class declared entirely within the body of another class or interface.An instance of a normal or top-level class can exist on its own. By contrast, an instance of an inner class cannot be instantiated without being bound to a top-level class.

class OuterClass {

  class InnerClass {  }

}

Types of nested classes in Java

Member class – They are declared outside a function (hence a “member”) and not declared “static”.
Local class
Anonymous class

Nested or inner class is a member of its enclosing class.
Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private. Static nested classes do not have access to other members of the enclosing class.A static nested class interacts with the instance members of its outer class (and other classes) just like any other top-level class. In effect, a static nested class is behaviorally a top-level class that has been nested in another top-level class for packaging convenience.

Why we use– if a class does’nt depend on anything other than his outer class then we will create static nested class.for example – we have nThere is no need for LinkedList.Entry to be top-level class as it is only used by LinkedList (there are some other interfaces that also have static nested classes named Entry, such as Map.Entry – same concept). And since it does not need access to LinkedList’s members, it makes sense for it to be static – it’s a much cleaner approach.

Happy learning with Vinay in techartifact…

Vinay

I am an Oracle ACE in Oracle ADF/Webcenter. Sr Java Consultant-working on Java/J2EE/Oracle ADF/Webcenter Portal/ content and Hibernate for several years. I'm an active member of the OTN JDeveloper/Webcenter forum. Passionate about learning new technologies. I am here to share my knowledge. Give your views and suggestion on [email protected] .

More Posts - Website

Follow Me:
TwitterLinkedInGoogle PlusYouTube