反射获取对象的属性值

Java 代码

1 > bean 对象

package com.whbs.bean;

 

public class UserBean {

    private Integer id ;

    private int age ;

    private String name ;

    private String address ;

   

    public UserBean(){

       System. out .println( " 实例化 " );

    }

   

    public Integer getId() {

       return id ;

    }

    public void setId(Integer id) {

       this . id = id;

    }

    public int getAge() {

       return age ;

    }

    public void setAge( int age) {

       this . age = age;

    }

    public String getName() {

       return name ;

    }

    public void setName(String name) {

       this . name = name;

    }

    public String getAddress() {

       return address ;

    }

    public void setAddress(String address) {

       this . address = address;

    }

   

   

   

}

 

2 > 反射测试

 

package com.whbs.test;

 

import java.lang.reflect.Field;

import java.lang.reflect.Method;

 

import com.whbs.bean.UserBean;

 

public class Test1 {

 

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

 

      

       /*

         * 实列化类 方法 1

         */

       //String classPath = "com.whbs.bean.UserBean";

       //Class cla = Test1.class.getClassLoader().loadClass(classPath);

       //Object ob = cla.newInstance();

      

       /*

         * 实列化类 方法 2

         */

       UserBean bean = new UserBean();

       bean.setId(100);

       bean.setAddress( " 武汉 " );

      

       // 得到类对象

       Class userCla = (Class) bean.getClass();

      

       /*

         * 得到类中的所有属性集合

         */

       Field[] fs = userCla.getDeclaredFields ();

       for ( int i = 0 ; i < fs. length ; i++){

           Field f = fs[i];

           f.setAccessible( true ); // 设置些属性是可以访问的

           Object val = f.get(bean); // 得到此属性的值    

      

           System. out .println( "name:" +f.getName()+ "/t value = " +val);

          

           String type = f.getType().toString(); // 得到此属性的类型

           if (type.endsWith( "String" )) {

              System. out .println(f.getType()+ "/t 是 String" );

              f.set(bean, "12" ) ;        // 给属性设值

           } else if (type.endsWith( "int" ) || type.endsWith( "Integer" )){

              System. out .println(f.getType()+ "/t 是 int" );

              f.set(bean,12) ;       // 给属性设值

           } else {

              System. out .println(f.getType()+ "/t" );

           }

          

       }

      

      

       /*

         * 得到类中的方法

         */

       Method[] methods = userCla.getMethods();

       for ( int i = 0; i < methods. length ; i++){

           Method method = methods[i];

           if (method.getName().startsWith( "get" )){

              System. out .print( "methodName:" +method.getName()+ "/t" );

              System. out .println( "value:" +method.invoke(bean)); // 得到 get 方法的值

           }

       }

    }

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值