1、提问:关于动态取得bean及属性值的问题
我现在有一个方法.传入的是ArrayList ,这里存的是我的一个bean对象.我现在想做到.不论这个arraylist里存的是什么bean,都可以根据现有的字段名得到这个字段的值.要怎么作呢??我现在的方法是.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里的.
使用方法网上也有的.
posted on 2006-07-07 09:31
保尔任 阅读(145)
评论(0) 编辑 收藏