BeanUtils - метод 'description', возвращающий неверное значение массива - PullRequest
1 голос
/ 14 декабря 2011

Я хочу преобразовать класс компонента в карту (ключ = имя члена, значение = значение члена).

Я использую метод BeanUtils.describe (beanClass);

( Редактировать : я использую commons-beanutils 1.8.3, jdk 1.6.0_20, на commons-beanutils 1.5 это работает)

Проблема в том, что возвращаемое значение неверно, (карта содержит только первый элемент из массива),

код:

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();
            }
        }
    }
  • Ожидаемый результат:

ключ = MyList, значение = [FIRST_VALUE, SECOND_VALUE]

ключ = класс, значение = класс $ Демо

  • Но реальный результат:

ключ = MyList, значение = [FIRST_VALUE]

ключ = класс, значение = класс $ Демо

Как видите, массив содержит два значения, но выходные данные (и карта) содержат только одно, почему ??

Спасибо

Benny

1 Ответ

0 голосов
/ 14 декабря 2011

Я запускаю вам пример кода на моем компьютере, и вывод: ключ = myList, значение = [first_value, second_value] ключ = класс, значение = класс com.gpdi.infores.dao.test.Demo Используйте JDK5 или выше, все будет в порядке.

...