gpt4 book ai didi

java - 是否可以使用 ByteBuddy 更改注释的值?

转载 作者:行者123 更新时间:2023-12-02 09:34:54 26 4
gpt4 key购买 nike

我正在尝试开发一个需要使用注释的工具。一个重要的功能是定位带有注释的元素并更改其值,即

// from this
@Annotation(value = "foo")
class SomeClass {}

// to this
@Annotation(value = "bar")
class SomeClass {}

我尝试首先删除带有 AsmVisitorWrapper 的注释然后我使用修改后的值重新添加注释。
遗憾的是这似乎不起作用。

我使用 byte-buddy-maven-plugin 来添加此转换。该错误发生在转换目标期间。我将一般错误追踪到 NullReferenceException :Asm ClassVisitor 似乎发生在 annotateType() 之后步骤并尝试将一些访问步骤应用于新附加的注释值。我认为NullReferenceException是由访问者引起的,因为要删除注释,您需要返回 null。

我在 github 上创建了一个测试存储库,并在其中推送了我的尝试。希望它有助于理解我需要实现的目标。 https://github.com/Fed03/bytebuddy-switch-annotation-test

谢谢

最佳答案

这确实是 Byte Buddy 中的一个错误,现已在 master 上修复,并将成为版本 1.10.2 的一部分。问题是您正在删除正在添加的注释,并且这不被视为场景。

但是,即使进行了此修复,尽管进行了绿色构建,您的问题也没有得到解决。您需要更好地区分以告诉 Byte Buddy 您要删除哪个注释。我建议您转换注释,而不是将其删除以便稍后再次添加。任何区分需要删除两个注释中的哪一个的匹配器都需要部分实现此类更改发现,这就是为什么首先实现转换器应该不会更困难。

关于java - 是否可以使用 ByteBuddy 更改注释的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com