gpt4 book ai didi

Javassist - 向类添加注释对反射不起作用

转载 作者:行者123 更新时间:2023-12-04 06:25:58 28 4
gpt4 key购买 nike

我正在使用 javassist 创建一个类并为其添加注释。当我使用 CtClass.writeFile 并且我看到带有 Java 反编译器的类文件时,注释就在那里,但是当我使用 class.getAnnotations() 或 class.getDeclaredAnnotations() 时,列表是空的。

ClassPool pool = ClassPool.getDefault();
pool.insertClassPath(new ClassClassPath(cl.loadClass("javax.jws.WebService")));
CtClass pikoClass = pool.makeClass("br.com.stuff.Piko");
ConstPool constPool = pikoClass.getClassFile().getConstPool();
AnnotationsAttribute attr = new AnnotationsAttribute(constPool, annotationsAttribute.visibleTag);
Annotation annoWebService = Annotation(constPool, pool.get("javax.jws.WebService"));
attr.setAnnotation(annoWebService);
pikoClass.getClassFile().addAttribute(attr);
Class piko = pikoClass.toClass();
piko.getDeclaredAnnotations(); // this is always empty
// Also tried
Annotation annoWebService = new Annotation("WebService", constPool);
Annotation annoWebService = new Annotation("@WebService", constPool);
Annotation annoWebService = new Annotation("javax.jwsWebService", constPool);
Annotation annoWebService = new Annotation("@javax.jwsWebService", constPool);

最佳答案

问题解决了,我使用的是 3.1 版,现在我使用的是 3.12.1.GA(最后一个在 maven 存储库上)并且在这个版本上注释有效。

关于Javassist - 向类添加注释对反射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035944/

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