In most of the cases I've seen that nested classes are static
.
Lets take an example of Entry
class in HashMap
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
final int hash;
.....
.....
}
Or Entry
class of LinkedList
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
.....
.....
}
What I know so far about nested class is:
- A non-static nested class has full access to the members of the class
within which it is nested.
- A static nested class cannot invoke non-static methods or access non-
static fields
My question is, what is the reason for making a nested class static in HashMap or LinkedList?
Update 1:
Following the already answer link I got an answer - Since 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.
Also as @Kayaman pointed out: A nested static class doesn't require an instance of
the enclosing class. This means that you can create a HashMap.Entry by itself,
without having to create a HashMap first (which you might not need at all).
I think both these points answered my question. Thanks all for your input.