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

来源:互联网 发布:淘宝卖家等级怎么区分 编辑:程序博客网 时间:2024/05/22 14:13
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 方法的值           }       }    } }

5 4