首页 / JAVA / 在编译的Java类中重写方法调用
在编译的Java类中重写方法调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在编译的Java类中重写方法调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含975字,纯文字阅读大概需要2分钟。
内容图文
![在编译的Java类中重写方法调用](/upload/InfoBanner/zyjiaocheng/821/834babf2980243f6a6f368f45557beb8.jpg)
我希望在解析编译的类文件时,在方法体内调用anther类来替换对给定类的调用…
换句话说,是否有一种方法可以检测方法中给定类的用法,并使用类似javaassist的方法替换方法的那一部分.
例如..如果我有编译版本的
class A { public int m() { int i = 2; B.multiply(i,i); return i; } }
有没有一种方法可以检测B的使用,然后改变要执行的代码
class A { public int m() { int i = 2; C.divide(i,i); return i; } }
我知道另一种方法是编写一个解析器来grep源文件以供使用,但我更喜欢更优雅的解决方案,例如使用反射来生成新的编译类文件.
有什么想法吗 ?
解决方法:
正如@djna所说,可以在加载字节码文件之前对其进行修改,但您可能不希望这样做:
>执行代码修改的代码可能很复杂且难以维护.
>已修改的代码很可能难以调试.首先,源级调试器将显示不再与您实际编辑的代码对应的源代码.
字节码重写在某些情况下很有用.例如,JDO实现使用字节码重写来将对象成员提取替换为对持久性库的调用.但是,如果您可以访问这些文件的源代码,则可以通过预处理(或生成)源代码获得更好(即更易维护)的解决方案.
编辑:AOP或Groovy听起来也像是可行的替代方案,具体取决于您预期的重写程度.
内容总结
以上是互联网集市为您收集整理的在编译的Java类中重写方法调用全部内容,希望文章能够帮你解决在编译的Java类中重写方法调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。