类名和方法名都是以字符串形式传送的. 但未知方法的参数.
有没有更好的方法找到类中的方法?
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;
}
}
}
解决方案 »
- java使用美化包问题
- Exception in thread "main" java.
- 我写了一个自动单元测试系统,用它来编译一个测试程序,应该调用什么命令?怎么调用啊?
- 拷贝的XML文件后出现乱码,如何解决?
- 输入文件的问题
- 关于String 比较的问题???
- 小弟请教了:生产者和消费者问题?
- 午饭时结帖,请教:有什么好的工具可以管理项目中的word文档?类似于CVS/vss一样的代码管理方式,check in/out时候 能自动识别修改的哪些内容
- 对于Java初学者,我应如何学习?
- 怎么样控制处在Runnable状态的线程的数量???
- 如果一个矿泉水价格为1.10元,我只有2元,下面代码是否正确
- 写文件时出现的问题
//也可以这样,但是你调用的这个方法的参数只能是,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) 耗时和耗资源.
现在没有更好的解决方案.