参考:https://blog.csdn.net/servermanage/article/details/102692622
虚构业务方法处理类:
public class BusinessMethod {
public void method1(int code) {
System.out.println("method code = " + code);
}
public void method2(int code) {
System.out.println("method code = " + code);
}
public void method3(int code) {
System.out.println("method code = " + code);
}
public void method4(int code) {
System.out.println("method code = " + code);
}
public void method5(int code) {
System.out.println("method code = " + code);
}
public void method6(int code) {
System.out.println("method code = " + code);
}
public void method7(int code) {
System.out.println("method code = " + code);
}
public void method8(int code) {
System.out.println("method code = " + code);
}
public void method9(int code) {
System.out.println("method code = " + code);
}
public void method10(int code) {
System.out.println("method code = " + code);
}
public void method11(int code) {
System.out.println("method code = " + code);
}
public void method12(int code) {
System.out.println("method code = " + code);
}
public void method13(int code) {
System.out.println("method code = " + code);
}
public void method14(int code) {
System.out.println("method code = " + code);
}
public void method15(int code) {
System.out.println("method code = " + code);
}
public void method16(int code) {
System.out.println("method code = " + code);
}
public void method17(int code) {
System.out.println("method code = " + code);
}
public void method18(int code) {
System.out.println("method code = " + code);
}
public void method19(int code) {
System.out.println("method code = " + code);
}
public void method20(int code) {
System.out.println("method code = " + code);
}
public void method21(int code) {
System.out.println("method code = " + code);
}
}
业务处理类中有测试方法method1到method21。
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
public class TestSwitchReflectDemo {
private static HashMap<Integer, String> sMaps;
static {
sMaps = new HashMap<Integer, String>();
sMaps.put(1, "method1");
sMaps.put(2, "method2");
sMaps.put(3, "method3");
sMaps.put(4, "method4");
sMaps.put(5, "method5");
sMaps.put(6, "method6");
sMaps.put(7, "method7");
sMaps.put(8, "method8");
sMaps.put(9, "method9");
sMaps.put(10, "method10");
sMaps.put(11, "method11");
sMaps.put(12, "method12");
sMaps.put(13, "method13");
sMaps.put(14, "method14");
sMaps.put(15, "method15");
sMaps.put(16, "method16");
sMaps.put(17, "method17");
sMaps.put(18, "method18");
sMaps.put(19, "method19");
sMaps.put(20, "method20");
sMaps.put(21, "method21");
}
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException,
IllegalAccessException, InstantiationException, InvocationTargetException {
int code = 11;
testSwitch(code);
testReflect(code);
}
public static void testReflect(int code) throws ClassNotFoundException, NoSuchMethodException,
IllegalAccessException, InstantiationException, InvocationTargetException {
long start = System.nanoTime();
Class clz = Class.forName("BusinessMethod");
Object obj = clz.newInstance();
Method m = clz.getDeclaredMethod(sMaps.get(code), Integer.TYPE);
m.setAccessible(true);
m.invoke(obj, code);
System.out.println("testReflect time:" + (System.nanoTime() - start));
}
public static void testSwitch(int code) {
BusinessMethod businessMethod = new BusinessMethod();
long start = System.nanoTime();
switch (code) {
case 1:
businessMethod.method1(code);
break;
case 2:
businessMethod.method2(code);
break;
case 3:
businessMethod.method3(code);
break;
case 4:
businessMethod.method4(code);
break;
case 5:
businessMethod.method5(code);
break;
case 6:
businessMethod.method6(code);
break;
case 7:
businessMethod.method7(code);
break;
case 8:
businessMethod.method8(code);
break;
case 9:
businessMethod.method9(code);
break;
case 10:
businessMethod.method10(code);
break;
case 11:
businessMethod.method11(code);
break;
case 12:
businessMethod.method12(code);
break;
case 13:
businessMethod.method13(code);
break;
case 14:
businessMethod.method14(code);
break;
case 15:
businessMethod.method15(code);
break;
case 16:
businessMethod.method16(code);
break;
case 17:
businessMethod.method17(code);
break;
case 18:
businessMethod.method18(code);
break;
case 19:
businessMethod.method19(code);
break;
case 20:
businessMethod.method20(code);
break;
case 21:
businessMethod.method21(code);
break;
default:
break;
}
System.out.println("testSwitch time:" + (System.nanoTime() - start));
}
}