`
dpzc
  • 浏览: 12927 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于内嵌类

    博客分类:
  • java
 
阅读更多
内嵌类有两种类型:内联(inner)类和静态内嵌(static nested)类。
主要的区别:
一、内联类可以访问定义在外围类(enclosing class)中的实例变量。静态内嵌类不可以。

二、内联类是完全封装在外围类中的。而静态内嵌类可以被外部代码使用,只要不是private的。如静态内嵌类Entry用来遍历Map对象中的key-value对。在Map之外的代码上下文,需要用Map.Entry来引用这个类。

因此,将内嵌类声明为静态的首要原因是,让其他类可以使用它。虽然可以将类声明为顶层类(top-level,也就是非内嵌类),但可能希望把他紧密地绑定在容器类中。例如Map.Entry被紧密地绑定到Map;因为如果缺少Map,Entry类就没有存在的意义。
第二个原因是,允许将其序列化。不能序列化内联类对象,因为他们能够访问外围类的实例变量。


参考文献 Agile Java
分享到:
评论
1 楼 twocat 2009-12-01  

相关推荐

Global site tag (gtag.js) - Google Analytics