一、反射类的一般方法
假设有一个Animal类:
class Animal{
public Class[] aa1(String name, int[] password){
return new Class[]{String.class};
}
}
然后反射该类的方法:
public void test3() throws Exception{
Person p = new Person();
Class clazz = Class.forName("cn.itcast.reflect.Person");
Method method = clazz.getMethod("aa", String.class, int[].class);
Class cs[] = (Class[]) method.invoke(p, "aaaa", new int[]{1,23});
System.out.println(cs[0]);
}
二、反射类的main方法
使用method.invoke方法(method是Method类的一个对象)来触发函数时,不能简单的method.invoke(null, new String[]{"aa","bb"});这样的话会出错,因为invoke遇到数组参数时(应该是单个数组参数),会把数组的变量进行拆分,把数组里的每个变量分别赋给method对象方法的各个形参,导致出错。处理的方法有两种:
1 method.invoke(null, new Object[]{new String[]{"aa","bb"}});
2 method.invoke(null, (object)new String[]{"aa", "bb"});