类名和方法名都是以字符串形式传送的. 但未知方法的参数.
有没有更好的方法找到类中的方法?
public void execMethod(String strClassName, String strMethodName, String[] para) {
Class cls = Class.forName(strClassName);
Method[] methods = cls.getMethods();
Method method;
for (Method m : methods) {
if (m.getName().equals(strMethodName)) {
method = m;
break;
}
}
}
有没有更好的方法找到类中的方法?
public void execMethod(String strClassName, String strMethodName, String[] para) {
Class cls = Class.forName(strClassName);
Method[] methods = cls.getMethods();
Method method;
for (Method m : methods) {
if (m.getName().equals(strMethodName)) {
method = m;
break;
}
}
}
//也可以这样,但是你调用的这个方法的参数只能是,String了,因为你传进来的参数的数组是String类型的,假如你改为Object[]那就是使用与其他方法了public void execMethod(String strClassName, String strMethodName, String[] para) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Class cls = Class.forName(strClassName);
System.out.println(cls.getMethods());
Class[] argsClass = new Class[para.length];
for (int i = 0; i < para.length; i++) {
argsClass[i] = para[i].getClass();
}
Method method = cls.getDeclaredMethod(strMethodName, argsClass);
method.invoke(null, "zhao","name");
}
正因为重载所以我才没有更好的方法.
程序本身并没有错(因为项目设计中排除了那些情况).
只是怕 for (Method m : methods) 耗时和耗资源.
现在没有更好的解决方案.