在 Java 运行时扩展或添加新类

发布于 2024-07-24 16:37:21 字数 92 浏览 6 评论 0 原文

有没有办法在 java 运行时添加(或扩展现有)类。 我遇到了一个问题,我必须在运行时扩展现有的类并将其添加到类路径中,以便选择这个新类。

谢谢,

Is there a way to add (or extend existing) classes at runtime in java. I'm stuck on a problem, in which I have to extend an existing class at runtime and add this to the classpath, so that this new class get picked up.

thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

一场信仰旅途 2024-07-31 16:37:22

您绝对应该写下为什么需要此功能。
如果您尝试在运行时添加或替换逻辑,您可能需要查看 脚本 API 和一些实际的实现

You should definitely write why you need this feature.
If you attempt to add or replace logic at runtime you might want to have a look at the scripting API and some actual implementations.

‖放下 2024-07-31 16:37:21

有多种方法可以做到这一点。

  • 使用 javax.tools 打包,然后使用 ClassLoader 加载它们。
  • 如果您正在编写接口,则可以使用
  • 使用 BCELASM(后者对语言功能(如注释)提供更多最新支持),然后使用 ClassLoader 加载该类。

我想还有其他选择。

There are a number of ways you could do this.

  • Compile source code at runtime using the javax.tools package and then load them using a ClassLoader.
  • If you are writing to interfaces, you can decorate classes with a Proxy.
  • Take the more complicated route of bytecode manipulation/generation using a technology like BCEL or ASM (the latter has more up-to-date support for language features, like annotations) and then load the class with a ClassLoader.

I imagine there are other options.

那片花海 2024-07-31 16:37:21

您可能想查看 BCEL。 如果没有关于您需要做什么的更多信息,就很难给出更具体的答案。

You might want to look at BCEL. Without any more information about what you need to do, it's tricky to give a more specific answer.

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