Linklist具有名为ENTRY的静态类
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;
}
}
在LinkList中创建了一个对象
private transient Entry<E> header = new Entry(null, null, null);
以下是我的问题?
答案 0 :(得分:3)
在性能方面,非静态类包含对创建它们的外部类的隐式引用。如果您不需要该引用,则可以通过将内存设置为静态来节省内存。 (参见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
个实例。