我需要给websphere一个补丁。我有一个主要的java类,它有三个内部类。我几乎没有更改主类的代码,但没有更改任何内部类。现在我的问题是,我是否应该将所有内部类与主类文件一起作为补丁或主类的一部分?将java的外部类编译效果内部类
回答
这不是一个权威的答案,但我每次做这样的补丁的时候,我复制所有类(外和内部类),即
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你对匿名类的观点是特别有价值的。 – dasblinkenlight
如果我们没有“匿名内部类”,那么亚当可能是正确的? – VamsiKrishna
@VamsiKrishna:我希望如此,是的。在这种情况下,你只能修补外部类。 –
内部类就像普通类,隐式引用外部类,所以我会说只给外部类是安全的如果你真的没有改变内部类。
如果我们没有“匿名内部类”,那么您的观点是有效的,因为它会生成始终具有相同名称的类文件。 – VamsiKrishna
@VamsiKrishna这是正确的。 Lukas提到,改变匿名内部类的创建顺序可以在FS中产生不同的类名 –
- 1. 的Java内部类阴影外部类
- 2. 静态内部类编译结果
- 3. Java:编译内部相关类
- 4. 外部类内部类 - 实例化内部类作为外部类的成员
- 5. Java泛型类,使用外部类参数的内部类
- 6. Java:内部类中的内部类
- 7. 访问外部类的内部类
- 8. 如何用内部类来编译java类?
- 9. 从Java的内部类访问外部类“超级”
- 10. 的Java内部类
- 11. 内部类访问外部类成员
- 12. Qt C++内部类访问外部类
- 13. 内部类引用外部类实例
- 14. 内部类和外部类在c#
- 15. 爪哇 - 内部的内部类阵列外部类
- 16. Java从内部类单例中访问外部类变量
- 17. Java:在匿名内部类中调用外部类方法
- 18. 在外部类中使用内部类对象java
- 19. Java - 内部类构造函数 - 只允许外部类
- 20. java线程从静态内部类访问外部类
- 21. Java内部类访问外部类变量
- 22. Java外部类访问内部类接口常量
- 23. 有2个类和外部库的JAVA编译问题
- 24. 用Point作为外部类编码内部类
- 25. 如何将内部类的值返回给外部类?
- 26. C++内部类无法编译
- 27. 使用内部类时编译错误
- 28. 摘要内部类编译失败
- 29. 如何获得也在内部类中的内部类的外部类
- 30. Java类的外部属性
这个问题似乎是无稽之谈。内部类与外部类在同一个文件中。内部类是主类的一部分,就像方法,变量一样。所以你不能在技术上给予主要的_alone_。你给改变的文件,就这些。 – Juvanis
@VincenzoSanchez:是的,你可以。内部类在字节码中并不真正“存在”(即'.class'文件) –
@LukasEder它们是 - 它们是名称中带有美元符号的'.class'文件。 – dasblinkenlight