java - 如何继承/替换java的final类?

标签 java eclipse osgi aspectj hotswap

我正在制作一个工具来在运行时执行多项检查(这将在 CI 服务器中运行),我需要的事情之一就是更改某些类的实现以提供我需要的数据(基本上,我需要知道某些类何时发生一些特定的变化)。

这是一个 OSGi 应用程序(我不知道这是否是正确的名称),我正在使用 AspectJ 来捕获此信息,但 AspectJ 不会更改 JDK 类,虽然我可以通过一些方法解决我的问题像 LinkedList 这样的类(不是具有非 final方法的最终类),我必须对 StringTokenizer 或 StringBuilder 这样的类(我不能继承或注入(inject)带有方面的代码)做同样的事情。

经过几次搜索后,我对 HotSwap、自定义类加载器和我找到的其他一些解决方案有很多疑问,但我不知道它们是否能满足我的需求。

我正在使用 Eclipse Indigo(如果它是一个只能在 IDE 上运行的解决方案也可以)和 Java 6

最佳答案

查看 Apache BCEL 以方便的方式操作 Java Final 类的字节码。这样,您可以创建自己的自定义类加载器,加载类,操作字节码以包含您自己的检查,然后将修改后的类传递给您的运行时程序。

http://commons.apache.org/proper/commons-bcel/

关于java - 如何继承/替换java的final类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760793/

相关文章:

eclipse - svn checkout 和 checkin maven 多模块项目如何

java - OSGi/Equinox 类加载器使用意外的捆绑版本

java - 如何在paintComponent方法中初始化并绘制矩形变量?

java - 我希望我的 Android 应用程序能够打开所有文件扩展名

java - 如何分发多模块maven项目

java - osgi 包如何知道接口(interface)?

maven - 使用 <Embed-Dependency> 在 OSGI 包中添加 jar 的问题

java - MyFaces 吃掉我的异常(exception)

eclipse - 如何在eclipse中自动导入scala类?

Java Eclipse 将图像上传到包内的图像文件夹