背景:
编码过程中往往需要根据某些字段特定的值来调用具体的方法
实现方法1:
最简单的实现逻辑
public class Main {
public static void main(String[] args) {
Main main = new Main();
String method = "A";
// 随着业务的增加,判断层级会越来越多,而且每次业务变更都需要修改
if(method.equals("A")){
main.A();
}else if (method.equals("B")){
main.B();
}else if (method.equals("C")){
main.C();
}
}
public void A(){
System.out.println("A");
}
public void B(){
System.out.println("B");
}
public void C(){
System.out.println("C");
}
}
实现方法2(优化之后的方法):
public class Main {
public static void main(String[] args) {
Main main = new Main();
// 要求 method 与业务方法名一致(区分大小写),后续业务扩展无需改动
String method = "B";
try {
// 通过 method 方法鉴别串获取相应的业务方法反射对象
Method invokeMethod = main.getClass().getDeclaredMethod(method);
// 调用目标方法
invokeMethod.invoke(main);
} catch (Exception e) {
e.printStackTrace();
}
}
public void A(){
System.out.println("A");
}
public void B(){
System.out.println("B");
}
public void C(){
System.out.println("C");
}
}