1. 程式人生 > >Java使用PropertyDescriptor獲取實體類中私有屬性的值,並給私有屬性賦值!

Java使用PropertyDescriptor獲取實體類中私有屬性的值,並給私有屬性賦值!

下面看一段程式碼:

BeanUtils.java

package yw.javaben;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

/**
 * 獲取私有屬性值JavaBean的幫助類
 * @author yw-tony
 *
 */
public class BeanUtils {
    private PropertyDescriptor dp = null;
    private String propertyName;
    private Object obj;
    /**
     * 構造方法
     * 
@param objName 屬性名稱 * @param obj 要操作的物件 */ public BeanUtils(String objName,Object obj){ try{ this.propertyName = objName; this.obj = obj; dp = new PropertyDescriptor(propertyName, obj.getClass()); }catch(Exception e){ e.printStackTrace(); } }
/** * 獲取javabean私有屬性的值 * @return * @throws Exception */ public Object getProperty() throws Exception { //獲取物件屬性方法 Method method = dp.getReadMethod(); //獲取屬性對應的值 Object retValue = method.invoke(obj); return retValue; } /** * 設定私有屬性的值 *
@param setValue * @throws Exception */ public void setProperty(Object setValue) throws Exception { Method method = dp.getWriteMethod(); method.invoke(obj, setValue); } }

BeanEntity.java

package yw.javaben;

/**
 * 驗證屬性識別符號的javabean
 * @author yw-tony
 *
 */
public class BeanEntity {
    private int x;
    private int y = 10;
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    

}

JavaBeanTest.java

public class JavaBeanTest {
    /**
     * 測試JavaBean
     * 
     * @param args
     */
    public static void main(String[] args) throws Exception {
        BeanEntity bean = new BeanEntity();
        String x = "x";//BeanEntity的屬性名稱
        BeanUtils utils = new BeanUtils(x, bean);
        utils.setProperty(12);
        Object value = utils.getProperty();
        System.out.println(value);

    }
}