有没有办法在运行时获取类的字节码?
在Java中,有没有一种方法(在运行时)获取定义特定类的字节码?
换句话说,有没有办法获取传递给 ClassLoader.defineClass(String name, byte[] b, int off, int len)
的 byte[]
数组加载了特定的类?我看到这个方法被声明为final
,因此创建一个自定义ClassLoader
来拦截类定义似乎是不可能的。
过去,我使用类的 ClassLoader 通过 getResourceAsStream(String) 方法获取字节码,但我更喜欢更规范的解决方案。
In Java, is there a way (at runtime) to obtain the bytecode which defined a particular class?
Put another way, is there a way to obtain the byte[]
array passed to ClassLoader.defineClass(String name, byte[] b, int off, int len)
when a particular class was loaded? I see that this method is declared final
, so creating a custom ClassLoader
to intercept class definitions seems out of the question.
In the past, I have used the class's ClassLoader
to obtain the bytecode via the getResourceAsStream(String)
method, but I would prefer a more canonical solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里是如何实现代理的描述
Here is a description how to implement an agent
“Java 代理”将是显而易见的解决方案。
"Java agents" would be the obvious solution.