我们正在使用JDT生成java源代码。我们一直在生成一个类,其中类本身被注释为:
@SomeAnnotation({Class1.class, Class2.class})
请告诉我如何实现这一目标。我正在使用NormalAnnotation类,但无法相应地设置表达式。虽然可以设置String文字,但Class不能。
答案 0 :(得分:0)
我能够使用NormalAnnotation类完成此操作,这是代码:
// values包含类名。
NormalAnnotation normalAnnotation = ast.newNormalAnnotation();
Name name = ast.newName(annotationName);
normalAnnotation.setTypeName(name);
ArrayInitializer arrayInit = ast.newArrayInitializer();
for(String value : values){
TypeLiteral tL = ast.newTypeLiteral();
tL.setType(ast.newSimpleType(ast.newName(value)));
arrayInit.expressions().add(tL);
}
MemberValuePair memberValuePair = ast.newMemberValuePair();
memberValuePair.setName(ast.newSimpleName("value"));
memberValuePair.setValue(arrayInit);
normalAnnotation.values().add(memberValuePair);