有没有办法在运行时获取类的字节码?

发布于 2024-08-30 22:29:22 字数 334 浏览 4 评论 0原文

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡淡の花香 2024-09-06 22:29:22

这里是如何实现代理的描述

Here is a description how to implement an agent

肩上的翅膀 2024-09-06 22:29:22

“Java 代理”将是显而易见的解决方案。

"Java agents" would be the obvious solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文