黑马程序员技术交流社区

标题: 反射和创建实例对象的问题 [打印本页]

作者: 快乐的黑马    时间: 2014-1-15 15:42
标题: 反射和创建实例对象的问题
为什么下面的代码运行有错误码呢?我觉得这样写没错啊,最后是报这个错:
public class Test6 {

        public static void main(String[] args) throws Exception{
                Class clazz = Person.class;
                Person bean = (Person)clazz.newInstance();
                Method method = clazz.getMethod("Person",String.class,int.class);
                method.invoke(bean, "wangwu",20);
                System.out.println(bean.getAge());
               
               
        }
       
}


作者: 强子    时间: 2014-1-15 18:23
一看名称clazz.getMethod("Person",String.class,int.class);  类名叫Person 方法名也叫Person?
这时构造函数,得用Constructor啊
作者: 恩恩    时间: 2014-1-15 18:57
得到字节码文件以后,要得到一个构造函数的对象,然后用构造函数的对象去调用newInstance,创建一个这个类的对象,然后再用创建的类去调用里面的方法,调用方法的时候要传入方法的名字和类型。
作者: 袁梦希    时间: 2014-1-15 19:47
不错    继续努力   玩转论坛
作者: 快乐的黑马    时间: 2014-1-15 22:09
赵珏 发表于 2014-1-15 19:40
你直接用class字节码的 .newInstance方法时会默认调用空参数的构造方法来创建对象. 看你后面代码反射的方法 ...

是 这个原因,我后面试了,谢谢啊
作者: 快乐的黑马    时间: 2014-1-15 22:11
解决了,谢谢大家
作者: 黄晓鑫    时间: 2014-1-15 22:42
楼主不是用Class对象去获取方法的 你得先有构造方法 才可以去创建对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2