通过注释

时间:2017-12-08 11:33:27

标签: java spring spring-boot annotations aop

我需要编写一个代码,其中方法的执行取决于你的anotattion。例如:

public class Example {
    private final Integer LAYOUT = 1;
    public static void main(String... args){
        executeMethod1();
        executeMethod2();
    }

    @Execute(type = LAYOUT, needs = 1)
    executeMethod1(){
        System.out.println("Layout version 1");
    }

    @Execute(type = LAYOUT, needs = 2)
    executeMethod1(){
        System.out.println("Layout version 2");
    }
}

结果必须是:

console: Layout version 1

也许使用AOP?

1 个答案:

答案 0 :(得分:0)

这是通过反思来实现的。正如您将看到一个非常低效的结构:

void execute(int needs) {
    for (Method method : Example.class.getDeclaredMethods()) {
        Execute annotation = method.getAnnotation(Execute.class);
        if (annotation != null && annotation.type() == LAYOUT
                && annotation.needs() == needs) {
            method.invoke(this);
            return;
        }
    }
}

其他设计是可以想象的,但我也必须工作。