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

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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭