将java外部类编译为内部类

时间:2012-10-16 13:28:36

标签: java class inner-classes

我需要为websphere提供一个补丁。我有一个主java类,有三个内部类。我对主类的代码更改很少,但对内部类没有任何更改。现在我的问题是,我是否需要将所有内部类与主类文件一起作为补丁或主类的一部分来充分?

2 个答案:

答案 0 :(得分:3)

这不是一个权威的答案,但每次我进行这样的修补时,我都复制了所有类(外部的内部类),即

Outer.class
Outer$1.class     // These indexes might change ...
Outer$2.class     // ... between compilation runs
Outer$Inner.class // This name should never change

当我没有这样做时,通常会有一些后期的类加载副作用。在我看来,这通常是因为匿名内部类,它们并不总是重新生成相同的“匿名类索引”(如$1$2,等),取决于他们在.java文件中的顺序。

所以,可以肯定的是,因为这种补丁无论如何都是一种流氓技术,我总是复制所有的类。

答案 1 :(得分:1)

内部类就像普通类一样,隐含引用外部类,所以我想说只有外部类是安全的,如果你真的没有改变内部类。