使用特定注释在运行时调用方法的最有效方法

时间:2017-06-07 15:00:35

标签: java reflection annotations spring-annotations aspect

我有一个带有一堆方法的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

对于这个问题,哪种方法最有效,最好?

0 个答案:

没有答案