Я пытаюсь добавить аннотацию к классу динамически, используя javassist
Мой код выглядит следующим образом
private Class addAnnotation(String className,String annotationName, int frequency) throws Exception{
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.makeClass(className);
ClassFile classFile = ctClass.getClassFile();
ConstPool constpool = classFile.getConstPool();
AnnotationsAttribute annotationsAttribute = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag);
Annotation annotation = new Annotation(annotationName, constpool);
annotation.addMemberValue("frequency", new IntegerMemberValue(classFile.getConstPool(), frequency));
annotationsAttribute.setAnnotation(annotation);
ctClass.getClassFile().addAttribute(annotationsAttribute);
return ctClass.toClass();
}
Но возвращенный класс не имеет добавленной аннотации.
Class annotatedClass = addFrequencyAnnotation(MyClass.class.getSimpleName(),
MyAnnotation.class.getSimpleName(), 10);
annotatedClass.isAnnotationPresent(MyAnnotation.class); // Returns false
Я не уверен, чего не хватает в моем коде.Может ли кто-нибудь помочь определить проблему?