1、提問:關于動態(tài)取得bean及屬性值的問題
我現(xiàn)在有一個方法.傳入的是ArrayList ,這里存的是我的一個bean對象.我現(xiàn)在想做到.不論這個arraylist里存的是什么bean,都可以根據(jù)現(xiàn)有的字段名得到這個字段的值.要怎么作呢??我現(xiàn)在的方法是.BeanDescriptor bd = new BeanDescriptor(dataArr.get(recordIndex).getClass());這樣可以得到具體的bean名什么的.但是卻得不到屬性.甚至連屬性名都得不到.要怎么做呢??謝了.
解決的方法有以下幾種.
第一;
package a;
import java.lang.reflect.Method;
public class R {
public static void main(String[] args) throws Exception {
Object obj = new A("Winner","Hello","OK");//這是一個自定義的bean
Class clzz = obj.getClass();
Method[] ms = clzz.getMethods();//得到這個自定義的bean里的所有方法.包括類的get 和set方法.
for(int i=0;i<ms.length;i++) {
String mName = ms[i].getName();
//以下是只得到get方法即屬性值.
if(mName.startsWith("get")&&!mName.equals("getClass")) {
System.out.println(ms[i].invoke(obj,null));
}
}
}
}
第二種方法.
Object ob = dataArr.get(recordIndex);//存放在我的arrayList里的自定義bean
PropertyDescriptor pd = new PropertyDescriptor( currName, ob.getClass());//currName是當前的字段名
Method md = pd.getReadMethod();//取出當字段的get方法.
Object fieldValue = md.invoke(ob, new Object[0]);//得到值.
第三種方法.
提到的BeanUtils? 這個開始我沒找到是因為我沒加入類包.這個類是struts里的.
使用方法網(wǎng)上也有的.
posted on 2006-07-07 09:31
保爾任 閱讀(146)
評論(0) 編輯 收藏