例如:
存在3种方法
“map1方法,
map2方法,
map3mehtod"
我想根据整数“activemap”当前存储在其中的内容来调用正确的。
我可以做一个 If 语句
“如果(活动映射 == 1)
map1 方法;
elseif (activemap ==2)
……”
但是有没有可能更有效地使用整数的方法?
像“地图(活动地图)方法”
我也可以以相同的方式在一批中调用一个特定的数组。
顺便说一句,这一切都在java中。
通过反思是可能的,但我敦促您远离这种方法。为什么不将所有三种方法合二为一呢?一种选择是使用switch
语句来处理各种情况:
void mapMethod(int activemap) {
switch (activemap) {
case 1:
// map1method
break;
case 2:
// map2method
break;
case 3:
// map3method
break;
default:
break;
}
}
现在,您可以致电
mapMethod(activemap)
如果您想采用反射方法(正如我所说,我认为您不应该这样做),您可以按照以下方式做一些事情
String methodName = "map" + activemap + "method";
MyClass.class.getDeclaredMethod(methodName).invoke(null);
switch 语句会更容易阅读:
switch(activemap) {
case 1: map1method(); break;
case 2: map2method(); break;
}
您可以使用反射在运行时构建方法名称,但这不会更简单。反射是很多代码。
最有效的方法是创建一个enum
来表示不同的调用并将其int
用作枚举值的查找,或者如果这不可能,则使用一个switch
语句。您可以使用反射来完成您正在谈论的内容(在运行时根据其名称查找方法),但它的效率较低且比其中任何一个选项都更麻烦。
你可以使用Reflection来实现,它会是这样的:
java.lang.reflect.Method method;
method = myObject.getClass().getMethod("map+"activemap"+method", param1.class, param2.class, ..);
method.invoke(object, arg1, arg2,...);