首页 > 代码库 > Java 静态内部类的使用

Java 静态内部类的使用

以前一直以为静态内部类没用,现在发现在特定条件下使用静态内部类会更加方便.

静态内部类的使用最佳的示例莫过于jdk里面的LinkedList类了.

查看LinkedList的源码,LinkedList的节点用一个静态内部类Node表示,代码如下

   private static class Node<E> {        E item;        Node<E> next;        Node<E> prev;        Node(Node<E> prev, E element, Node<E> next) {            this.item = element;            this.next = next;            this.prev = prev;        }    }

为什么节点要用静态内部类?

1.首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。

2.随着类的加载而产生

3.由于LinkedList实现了Serializable接口,而内部类使用的是编译器产生的合成域来保存指向外围实例的引用,以及保存来自外围作用域的局部变量的值.这些域如何对应到类中是没有明确规定的,因此内部类的内部实现是定义不清楚的.[1]

 

 

[1] Effective Java 2nd Edition

Java 静态内部类的使用