我想将一个 bean 类转换为一个映射(键=成员的名称,值=成员的值)。
我正在使用方法 BeanUtils.describe(beanClass);
(编辑:我在 commons-beanutils 1.5 上使用 commons-beanutils 1.8.3,jdk 1.6.0_20,它可以工作)
问题是返回值不正确,(地图只包含数组中的第一项),
编码:
public class Demo {
private ArrayList<String> myList = new ArrayList<String>();
public Demo() {
myList.add("first_value");
myList.add("second_value");
}
public ArrayList<String> getMyList() {
return myList;
}
public void setMyList(ArrayList<String> myList) {
this.myList = myList;
}
public static void main(String[] args) {
Demo myBean = new Demo();
try {
Map describe = BeanUtils.describe(myBean);
Iterator it = describe.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry) it.next();
System.out.println(String.format("key=%s,value=%s", (String) pairs.getKey(), (String) pairs.getValue()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 预期输出:
键=我的列表,值= [第一个值,第二个值]
键=类,值=类 $Demo
- 但真正的输出是:
键=我的列表,值= [first_value]
键=类,值=类 $Demo
如您所见,数组包含两个值,但输出(和地图)仅包含一个,为什么?
谢谢,
本尼