A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张頔 中级黑马   /  2012-7-28 16:30  /  1426 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张頔 于 2012-7-28 16:39 编辑

package com.itheima;

import java.lang.reflect.*;


/*定义一个标准的JavaBean,名叫Person,包含属性name、age。
* 使用反射的方式创建一个实例、调用构造函数初始化name、age,
* 使用反射方式调用setName方法对名称进行设置,
* 不使用setAge方法直接使用反射方式对age赋值
* */
public class test7 {

        /**
         * @param args
         * @throws NoSuchMethodException
         * @throws SecurityException
         */
        public static void main(String[] args) throws Exception {
                Class<?> cl = Person.class;  
                Constructor constructor = cl.getConstructor(String.class,int.class);//提示这一行出错了
                Person person = (Person)constructor.newInstance("张三",21);
                Method method = cl.getMethod("setName",String.class);
                method.invoke(person, "李四");
                Field filed = cl.getDeclaredField("age");
                filed.set(person, 22);
                System.out.println("姓名:"+person.getName()+"年龄:"+person.getAge());
        }
}
class Person{
        private String name;
        private int age;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        
        Person(String name,int age){
                setName(name);
                setAge(age);               
        }
        
}

错误提示
Exception in thread "main" java.lang.NoSuchMethodException: com.itheima.Person.<init>(java.lang.String, int)
        at java.lang.Class.getConstructor0(Class.java:2706)
        at java.lang.Class.getConstructor(Class.java:1657)
        at com.itheima.test7.main(test7.java:20)
搞不懂了  求助

1 个回复

倒序浏览
额  搞定了
我把person的构造方法设成了public的就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马