posts - 73,  comments - 55,  trackbacks - 0

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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜