在运行时添加Java注释

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

是否可以在运行时向对象添加注释(特别是方法)?

对于更多的解释:我有两个模块,moduleA和moduleB。moduleB依赖于moduleA,它不依赖于任何东西。(modA是我的核心数据类型和接口等,modB是db / data层)modB也依赖于externalLibrary。在我的情况下,modB将一个类从modA移交给externalLibrary,这需要对某些方法进行注释。具体的注释都是externalLib的一部分,正如我所说的,modA不依赖于externalLib,我想保持这种状态。

那么,这是可能的,还是你有其他方法来看待这个问题的建议?

提问于
用户回答回答于

无法在运行时添加注释,这听起来像您需要引入一个适配器,模块B用它来包装来自模块A的对象,以暴露所需的注释方法。

用户回答回答于

可以通过字节码工具库(如Javassist)来实现

具体来说,看一下AnnotationsAttribute类的例子,了解如何创建/设置字节码API的注释和教程部分,以获取有关如何操作类文件的一般准则。

这是简单而直接的,但我不会推荐这种方法,并建议您考虑Tom的回答,除非您需要为大量类执行此操作(或者在运行时才会提供此类类,从而编写一个适配器是不可能的)。

扫码关注云+社区