2011-12-14 3 views
1

beanクラスをマップに変換したい(key =メンバー名、value =メンバー値)。BeanUtils - 'describe'メソッドが不正な配列値を返す

私はBeanUtils.describe(beanClass)メソッドを使用しています。

編集:Iコモンズ-々BeanUtils 1.5それが動作上のコモンズ-々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(); 
      } 
     } 
    } 
  • 期待出力:

キー=はmyList、値= [FIRST_VALUE、SECOND_VALUE]

キー=クラス、値=クラス$デモ

  • しかし、本当の出力は次のようになります。

キー= myList、value = [first_value]

key = class、value = class $デモ

配列には2つの値が含まれていますが、出力(およびマップ)には1つしか含まれていないことがわかります。

おかげで、

ベニー

答えて

0

私はあなたに私のコンピュータ上のサンプルコードを実行すると、出力は次のとおりです。 キー=はmyList、値= [FIRST_VALUE、SECOND_VALUE] キー=クラス、値=クラスコム.gpdi.infores.dao.test.Demo JDK5以降を使用しても問題ありません。

+0

ご回答ありがとうございます 私はcommons-beanutils 1.5でコードを実行しようとしましたが、それは動作します。おそらく1.8.3にバグがあります。 – user1097157

関連する問題