What are the uses of inner classes in Java? Are nested classes and inner classes the same?
Possible Duplicate:
Java inner class and static nested class
Java中内部类的用法是什么?嵌套类和内部类是相同的吗?
另一个答案很好地解决了这一差异。关于它们的用途/相关性,我的观点是:
匿名类:方便生产力它们很容易实现回调,而不需要创建新的命名类。
1 2 3 4 5 6 7 | button.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { frame.dispose(); } } ); |
它们对于线程(例如匿名
静态嵌套类本质上类似于常规类,只是它们的名称是
例如,考虑一个
内部类的实例可以访问其封闭类实例的字段。再想想链接列表,想象一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class LinkedList { private Node root = null; public class Node { private Object obj; private Node next; ... public void setAsRoot() { root = this; } } public Node getRoot() { return root; } public void setRoot( Node node ) { root = node; } } |
属于
请参见使用内部和匿名类实现更好的Java代码
不,它们是不一样的:内部阶级是非
JLS 8.1.3 Inner Classes and Enclosing Instances
An inner class is a nested class that is not explicitly or implicitly declared static.
另请参阅Joe Darcy的下图:
Joseph D. Darcy's Oracle Weblog - Nested, Inner, Member, and Top-Level Classes
相关问题
- Java内部类和静态嵌套类