Java反射得到属性的值和设置属性的值

来源:互联网 发布:彩票大数据分析 编辑:程序博客网 时间:2024/06/05 22:17

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()+"\tString");

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

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

              System.out.println(f.getType()+"\tint");

              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 方法的值

           }

       }

    }

 

}

转载于:http://zhangcb666.blog.163.com/blog/static/4696352920107255914820/

0 0