黑马程序员技术交流社区
标题:
反射 调用成员方法
[打印本页]
作者:
刘勇强
时间:
2013-6-3 16:10
标题:
反射 调用成员方法
本帖最后由 刘勇强 于 2013-6-3 16:58 编辑
class person
{
void speak()
{
System.out.println("hello,world");
}
}
复制代码
如果用Person.class.getMethod("speak
");这种格式调用上面的类中的成员方法,
这里哪里有问题呢?括号里面的参数该怎么用?
作者:
a464538715
时间:
2013-6-3 16:14
getMethod(String name, Class<?>... parameterTypes)
parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组
后面代表参数类型
请查看API
作者:
First
时间:
2013-6-3 23:25
基本上没有问题,但是还没有写全
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Vector;
public class Demo {
/**
* @param args
* @throws SecurityException
* @throws NoSuchMethodException
* @throws InstantiationException
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
// TODO Auto-generated method stub
Class clazz = Person.class;
Field[] fld = clazz.getFields();
Method m = clazz.getMethod("speak", null);
m.invoke(clazz.newInstance(), null);
}
}
class Person{
Person(){
System.out.println("p");
}
public void speak(){
System.out.println("speak");
}
}
复制代码
作者:
黑马-雷钊
时间:
2013-6-3 23:43
楼上的写的不错 很符合标准
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2