Java使用PropertyDescriptor獲取實體類中私有屬性的值,並給私有屬性賦值!
阿新 • • 發佈:2019-02-20
下面看一段程式碼:
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); } }