关于java:LinkedList有一个名为Entry的静态类。为什么它是静态的,有什么好处?

LinkedList have static class named as Entry.Why it is static and what would be the benefits ?

本问题已经有最佳答案,请猛点这里访问。

LinkList具有名为Entry的静态类

1
2
3
4
5
6
7
8
9
10
11
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;

Entry(E paramE, Entry<E> paramEntry1, Entry<E> paramEntry2){
  this.element = paramE;
  this.next = paramEntry1;
  this.previous = paramEntry2;
}
}

一个对象在链接列表中创建

1
private transient Entry<E> header = new Entry(null, null, null);

以下是我的问题?

  • 为什么是静态的?
  • 如果我们定义两个以上的链接列表,它会共享同一个静态类"entry"吗?

  • 在性能方面,非静态类包含对创建它们的外部类的隐式引用。如果不需要该引用,可以通过使其静态化来保存内存。(参见jls 8.1.3:Inner classes whose declarations do not occur in a static context may freely refer to the instance variables of their enclosing class.此功能需要存储对该类的引用。)

    在语义方面,对于代码的读者来说,更清楚的是,如果将内部类设置为静态的,则它不包含对外部类的依赖。从这个角度来看,应该始终声明内部类是静态的,直到达到需要依赖于封闭类的程度。

    关于你的问题2:我假设你的意思是"如果我们定义一个LinkedList的两个以上的实例"。它们将共享相同的静态类(即LinkedList.Entry.class对象本身),但当然,它们包含不同的Entry实例。