我需要编写一个代码,其中方法的执行取决于你的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?
答案 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;
}
}
}
其他设计是可以想象的,但我也必须工作。