我有以下注释:
@Target(ElementType.METHOD)
public @interface MyAnn {
}
以及使用@MyAnn
注释的方法:
@MyAnn
Object myMehtod(Object x) {
...
}
使用Java注释处理器,我得到带注释的元素:
Element annotatedElement // = myMehtod
答案 0 :(得分:1)
这是我的解决方案:
ExecutableType executableType = (ExecutableType)annotatedElement.asType();
List<? extends TypeMirror> parameters = executableType.getParameterTypes();
TypeMirror param1 = parameters.get(0);
DeclaredType declaredType = (DeclaredType)param1;
List<? extends AnnotationMirror> anns = ((TypeElement)declaredType.asElement()).getAnnotationMirrors( );
答案 1 :(得分:0)
ExecutableElement method = ...
您可以使用以下方法获取方法的返回类型
TypeMirror returnType = mehod.asType()
您可以使用以下方法获取方法的参数
List<? extends VariableElement> parameters = method.getParameters();
您可以通过以下方式获取参数名称
parameters.forEach(p -> {
String name = p.getSimpleName().toString();
TypeMirror type = p.asType();
});