【发布时间】:2015-07-21 16:41:26
【问题描述】:
在大多数情况下,我看到嵌套类是static。
让我们以HashMap 中的Entry 类为例
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
final int hash;
.....
.....
}
或者Entry类LinkedList
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
.....
.....
}
到目前为止,我对嵌套类的了解是:
- 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
我的问题是,在 HashMap 或 LinkedList 中将嵌套类设为静态的原因是什么?
更新 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).
我认为这两点都回答了我的问题。谢谢大家的意见。
【问题讨论】:
-
哦!我在寻找答案时没有意识到它是重复的。
标签: java linked-list hashmap nested-class