Use a non-static nested class (or inner class) if you require access to an enclosing instance’s non-public fields and methods . Use a static nested class if you don’t require this access.
Read moreWhy do we need static inner classes in Java?
The Java programming language allows you to define a class within another 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.
Read more