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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毕博 中级黑马   /  2012-4-25 12:01  /  1288 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



反射方式调用setName方法,s反射方式对age赋值 的代码 运行不了 代码有问题吗 求解

package


import java.lang.reflect.*;


public class Test{
        
      
        
        
        public static void main(String[] args) throws Exception{

                                   Class c = Class.forName("Persion");

               

                                  Constructor constructor= c.getConstructor();

                                  Persion person1 =(Persion)constructor.newInstance();

               

                                  Method mothod1= person1.getClass().getMethod("setAge",int.class);

                                         mothod1.invoke(person1, 39);

                                Method mothod2= person1.getClass().getMethod("setName",String.class );

                                  mothod2.invoke(person1, "lala");

                                  Field m1= person1.getClass().getField("age");

                                  System.out.println(m1.get(person1));

                                  Field m2= person1.getClass().getField("name");

                                  System.out.println(m2.get(person1));

                          
}
}


class Persion
{
        public String name;
        public int age;
        public Persion(String name,int age){
                this.name=name;
                this.age=age;
        }
        public Persion(){
    }
               
        public void setName(String name){
                this.name=name;
        }
        public String getName(){
                return this.name;
        }
        public void setAge(int age){
                this.age=age;
        }
        public int getAge(){
                return this.age;
        }
}
        
        


3 个回复

倒序浏览
去掉代码第一行的package,你没有打包,就没有必要加package关键字
回复 使用道具 举报
我运行了你的代码下面这句没有取得persion的字节码
public static void main(String[] args) throws Exception{

                                   Class c = Class.forName("Persion");//这里的Persion写的不对
你可以在eclipse里鼠标点在class Persion上显示出的地址复制贴进上面的代码中就好了,我贴了图片

4.png (21.33 KB, 下载次数: 31)

取得正确地址

取得正确地址

5.png (18.24 KB, 下载次数: 30)

运行结果

运行结果

评分

参与人数 1黑马币 +20 收起 理由
毕博 + 20 很给力!

查看全部评分

回复 使用道具 举报
好了  谢了 高人
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马