如何根据字符串来调用对应的函数?比如//定义函数
private void sub1(){...}
private void sub2(){...}
private void sub3(){...}
....................
private void subN(){...}///////////////////////////////////
//用来存储函数的名称
ArrayList sublist = new ArrayList();
sublist.add("sub1");
sublist.add("sub2");
sublist.add("sub3");
sublist.add("sub4");
.............
sublist.add("subN");..................//////////////////////////////////String subname = sublist.get(i); //取出一个函数名请问如何根据取出的subname来调用对应的函数呢
private void sub1(){...}
private void sub2(){...}
private void sub3(){...}
....................
private void subN(){...}///////////////////////////////////
//用来存储函数的名称
ArrayList sublist = new ArrayList();
sublist.add("sub1");
sublist.add("sub2");
sublist.add("sub3");
sublist.add("sub4");
.............
sublist.add("subN");..................//////////////////////////////////String subname = sublist.get(i); //取出一个函数名请问如何根据取出的subname来调用对应的函数呢
Class<Test> classType = Test.class;
Object o = classType.newInstance();
for (int i = 0; i < sublist.size(); i++) {
String subname = sublist.get(i); //取出一个函数名
Method method = classType.getMethod(subname,null);
method.invoke(o, null);
}
ps:你定义的函数不应该是private的,否则无法访问了
程序中2处null可以用空数组代替,因为你的方法没有参数,如果有参数,根据类型给定数组就可以
这里的
Method method = classType.getMethod(subname,null);
null是指给函数传参的吗
比如你是一个int,一个String参数 classType.getMethod(subname,new Class[] { int.class, String.class });
然后下面调用时候
method.invoke(o, new Object[] {1, "hello"});当然如果你需要函数的返回值invoke函数会把返回值传回来,你只要在左边用object接收就可以
如:Object returnType = method.invoke(o, new Object[] {1, "hello"});