1

我想将一个 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

如您所见,数组包含两个值,但输出(和地图)仅包含一个,为什么?

谢谢,

本尼

4

1 回答 1

0

我在我的电脑上运行你的代码示例,输出为: key=myList,value=[first_value, second_value] key=class,value=class com.gpdi.infores.dao.test.Demo 使用JDK5或更高版本即可.

于 2011-12-14T09:28:24.163 回答