我有一个带有一堆方法的A类,我用独特的Annotations注释了相同的方法。我希望在给定特定注释的情况下在运行时调用该方法。另外,我可能也必须传递参数。
public class XYZAccessor(){
@CustomAnnotation(id="methodAIdentifier")
public String methodA(){
return "A";
}
@CustomAnnotation(id="methodBIdentifier")
public String methodB(){
return "B";
}
@CustomAnnotation(id="methodCIdentifier")
public int methodC(int param){
return (5+param);
}
}
给定字符串“methodAIdentifier”,我想调用XYZAccessor.methodA();
我已经看到了这些方法。
1)Java反射:XYZAccessor.getClass.getMethods.getAnnotations() 迭代并找到具体的方法并调用它。
2)Google思考:这些以javaassist和guava为依赖。 使用他们的框架Class.getMethodAnnotatedWith(“methodAIdentifier”)
3)AspectJ:我不清楚如何在这个用例中使用Aspect。像切入点和@Around这样的东西。就像是 Pointcut matching methods with annotated parameters
对于这个问题,哪种方法最有效,最好?