aspectj BCEL добавить аннотацию параметра метода не работает - PullRequest
0 голосов
/ 02 апреля 2019

Используйте следующий код Java для создания динамического класса и загрузите его,

ClassGen classGen = new ClassGen("test", "java.lang.Object", "test", java.lang.reflect.Modifier.PUBLIC, null);

MethodGen methodGen = new MethodGen(java.lang.reflect.Modifier.PUBLIC, BasicType.getType(void.class), new Type[] {new ObjectType("java.lang.String")}, new String[] {"param"}, "testMethod", "test", new InstructionList(), classGen.getConstantPool());

NameValuePair nameValuePair = new NameValuePair("name", new SimpleElementValue(ElementValue.STRING, classGen.getConstantPool(), "param"), classGen.getConstantPool());

AnnotationGen annotation = new AnnotationGen(new ObjectType(RequestParam.class.getName()), Arrays.asList(nameValuePair), true, classGen.getConstantPool());

methodGen.addParameterAnnotation(0, annotation);

classGen.addMethod(methodGen.getMethod());
org.aspectj.apache.bcel.classfile.JavaClass javaClass = classGen.getJavaClass();
Class<?> defineClass = new com.google.core.utils.ByteClassLoader().defineClass("test", javaClass.getBytes());

defineClass.getMethods()[0].getParameters()[0].getDeclaredAnnotations();

Последняя строка в моем коде возвращает пустой массив, как я могу это решить?

...