为了账号安全,请及时绑定邮箱和手机立即绑定

在运行时添加Java批注

在运行时添加Java批注

慕的地10843 2019-12-02 12:44:20
是否可以在运行时向对象(特别是方法)添加注释?需要更多说明:我有两个模块,模块A和模块B。moduleB依赖于moduleA,而它不依赖任何东西。(modA是我的核心数据类型和接口,而modB是数据库/数据层)modB也取决于externalLibrary。以我为例,modB将一个类从modA传递到externalLibrary,这需要注释某些方法。具体的注释都是externalLib的一部分,正如我所说,modA不依赖于externalLib,我想保持这种方式。那么,这是否可能,或者您对解决此问题的其他方式有建议吗?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-12-02
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

可以通过字节码检测库(例如Javassist)来实现。


特别是,请查看AnnotationsAttribute类,以获取有关如何创建/设置注释的示例,以及有关字节码API的教程部分,以获取有关如何操作类文件的一般准则。


不过,这不是简单而直接的任何事情-我不建议您采用这种方法,而是建议您考虑Tom的答案,除非您需要对大量类进行此操作(或者说这些类直到运行时才可用,因此编写适配器是不可能的)。


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 435 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号