2011-12-14 1 views
1

Я хочу преобразовать класс bean в карту (key = имя члена, value = значение члена).BeanUtils - метод 'describe' return Неверное значение массива

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

(Edit: Я использую Викисклада BeanUtils 1.8.3, JDK 1.6.0_20, на Викисклада 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]

ключ = класс, значение = класс $ Demo

  • Но реальный выход:

ключ = myList, значение = [first_value]

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

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

Спасибо,

Бенни

ответ

0

Я бег вам пример кода на моем компьютере, и выход: ключа = MyList, значение = [FIRST_VALUE, SECOND_VALUE] ключа = класс, значение = класс ком .gpdi.infores.dao.test.Demo Использование JDK5 или выше будет в порядке.

+0

Спасибо за ваш отзыв, Я попытался запустить код с помощью commons-beanutils 1.5, и он работает. Вероятно, в 1.8.3 есть ошибка. – user1097157