Java 在运行时修改方法注释参数

Java 在运行时修改方法注释参数,java,reflection,methods,annotations,Java,Reflection,Methods,Annotations,我发现了这个线索: 我试图更改方法注释,但java.lang.reflect.method不包含任何类似“annotations”的映射字段或类似“getDeclaredAnnotationMap”的方法 只有专用字节[]注释,但是我可以用这个字节数组做什么 那么,如何修改方法的注释呢 编辑: 我创造了: 但这只是编辑方法的这个实例,如果您取消注释33行代码,那么值将重置。我编写了一个类AnnotationUtil来解决seris需求 它可以在类/字段/方法实例上添加/删除/更改注释值 请注意,

我发现了这个线索:

我试图更改方法注释,但java.lang.reflect.method不包含任何类似“annotations”的映射字段或类似“getDeclaredAnnotationMap”的方法

只有
专用字节[]注释
,但是我可以用这个字节数组做什么

那么,如何修改方法的注释呢

编辑:
我创造了:

但这只是编辑方法的这个实例,如果您取消注释33行代码,那么值将重置。

我编写了一个类
AnnotationUtil
来解决seris需求

它可以在类/字段/方法实例上添加/删除/更改注释值

请注意,在添加/删除注释时,使用
reflectil
获取根字段/方法

在github上查看:


你确定吗?“map field”和“getDeclaredAnnotationMap”,它们只复制了带有注释的数组,如果您编辑它,什么都不会改变。哎呀,对我来说太晚了。在JavaDocs“此方法的调用方可以自由修改返回的数组”之后,我停止了阅读。好的,我创建了:,但这只是编辑方法类的当前实例。我甚至不记得为什么我现在需要这个,我已经知道了这个窍门(因为我只缺少根实例),但忘记了这个问题。请注意,它在下一个java版本中不起作用,因为它们不再允许在模块之间进行反射-需要使用额外的jvm参数-或代理+插装/不安全/本机代码。我会接受这个答案。@GotoFinal…在类注释的情况下,它们由一个
SoftReference
保存,它允许垃圾收集缓存数据并有效恢复您的操作。这确实是最后的手段,但我从您的UTIL中学到了很多:)链接被破坏:(@JayD)