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

Posted

技术标签:

【中文标题】在 Java 中在运行时扩展或添加新类【英文标题】:Extending or adding new classes at runtime in Java 【发布时间】:2010-11-03 22:19:27 【问题描述】:

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

谢谢,

【问题讨论】:

【参考方案1】:

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

在运行时使用javax.tools 包编译源代码,然后使用ClassLoader 加载它们。 如果要写入接口,可以使用Proxy 装饰类。 使用像BCEL 或ASM(后者对语言特性,如注解等提供更多最新支持)等技术采取更复杂的字节码操作/生成路线,然后使用 ClassLoader 加载类.

我想还有其他选择。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在 Java 中在运行时扩展或添加新类的主要内容,如果未能解决你的问题,请参考以下文章

在运行时在 jQuery 中添加类并选择新类

在 C# 中在运行时挂钩托管方法

在 grails 应用程序中在运行时修改 groovy 代码

是否可以在 Java 中在运行时创建变量?

Java-反射机制

如何在构建命令中在Gradle上添加运行时库