1. 程式人生 > >Java反射得到屬性的值和設置屬性的值

Java反射得到屬性的值和設置屬性的值

方法 .class 類型 type() reflect etc str 測試 tde

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

Java反射得到屬性的值和設置屬性的值