就是调用类中的方法,最简单的用法是可以把方法参数化,invoke(class, method)比如你Test类里有一系列名字相似的方法setValue1、setValue2等等。可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue
如:public class MyTest{ public static void main(String[] args) { String [] names ={"tom","tim","allen","alice"};
Class> clazz = Test.class; try Method method = clazz.getMethod("sayHi", String.class);for(String name:names)method.invoke(clazz.newInstance(),name);} catch (NoSuchMethodException e) e.printStackTrace(); } catch (IllegalAccessExcepti e.printStackTrace( } catch (IllegalArgumentException {e.printStackTrace();} catch (InvocationTargetException e)e.printStackTrace(); } catch (InstantiationException e {e.printStackTrace( }class Test{public void sayHi(String name){ System.out.println("Hi "+name); }
private static void m9() throws Exception {
Class[] argClasses = new Class[] {String.class};
Object[] args = new Object[] {new String("world!")};
Method m = java.lang.String.class.getMethod("concat", argClasses);
String result = (String)m.invoke(new String("hello"), args);
System.out.println(result);
}
invoke方法详解 及实现循环的源代码 ,相信信息请看这里 http://blog.csdn.net/java958199586/article/details/6951882
根据万物皆对象,所以类也是对象,通过反射得到描述类的对象,也就是Class这个类。有三种方法得到:
类名.class;
实例.getclass;
Class.forName(全类名);
得到描述类的类后,就可以通过类里面的方法,字段和注解。
invoke是反射调用方法,方法里面有两个参数,第一个参数是调用这个方法的实例,第二个就是那个方法的参数类表