首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

javac 对于私有内部类的奇怪处置

2012-10-13 
javac 对于私有内部类的奇怪处理今天同学遇到一个奇怪的问题,让我帮他看,结果发现了一个 javac 的处理小 b

javac 对于私有内部类的奇怪处理

今天同学遇到一个奇怪的问题,让我帮他看,结果发现了一个 javac 的处理小 bug 。

?

看这段代码:

public class OuterClass {    private InnerClass test = new InnerClass();    private static class InnerClass {    }}

你可能认为,这段代码编译之后,会生成两个 class 文件:OuterClass.class 和 OuterClass$InnerClass.class 。但事实是,还会多生成一个 OuterClass$1.class ,即使去掉 static 修饰符也是这样的。为什么会这样呢?

?

我经过上网查找,找到的讨论:
http://hi.baidu.com/digno/blog/item/cd894a630511a16a0c33faa5.html
http://72.5.124.102/thread.jspa?threadID=277695&tstart=9117
http://forums.sun.com/thread.jspa?threadID=594503

?

据说原因是:

public class OuterClass { private InnerClass test = new InnerClass(); private static class InnerClass { public InnerClass() { } }}

用 Eclipse 编译就没有这个问题。这个问题的麻烦之处就在于:如果用 emma 测覆盖率,那么那个 OuterClass$1 就没办法覆盖到,结果类覆盖率大打折扣。

热点排行