Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小海狸-x27;描述';方法返回不正确的数组值_Java_Apache Commons Beanutils - Fatal编程技术网

Java 小海狸-x27;描述';方法返回不正确的数组值

Java 小海狸-x27;描述';方法返回不正确的数组值,java,apache-commons-beanutils,Java,Apache Commons Beanutils,我想将bean类转换为映射(key=成员的名称,value=成员的值) 我使用的方法是BeanUtils.descripe(beanClass) (编辑:我使用的是commons beanutils 1.8.3、jdk 1.6.0\u 20,在commons beanutils 1.5上可以正常工作) 问题是返回值不正确(映射只包含数组中的第一项) 守则: public class Demo { private ArrayList<String> myList =

我想将bean类转换为映射(key=成员的名称,value=成员的值)

我使用的方法是BeanUtils.descripe(beanClass)

编辑:我使用的是commons beanutils 1.8.3、jdk 1.6.0\u 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();
            }
        }
    }
公共类演示{
private ArrayList myList=new ArrayList();
公共演示(){
myList.add(“第一个值”);
myList.add(“第二个值”);
}
公共阵列列表getMyList(){
返回myList;
}
公共无效集合列表(ArrayList myList){
this.myList=myList;
}
公共静态void main(字符串[]args){
Demo myBean=newdemo();
试一试{
Map descripe=BeanUtils.descripe(myBean);
迭代器it=descripe.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());
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
  • 预期产出:
key=myList,value=[第一个值,第二个值]

key=class,value=class$Demo

  • 但实际产出是:
key=myList,value=[第一个值]

key=class,value=class$Demo

正如您所见,数组包含两个值,但输出(和映射)仅包含一个值,为什么

谢谢


Benny

我在我的计算机上运行了您的代码示例,输出为: key=myList,value=[第一个值,第二个值] key=class,value=class com.gpdi.infores.dao.test.Demo
使用JDK5或更高版本就可以了。

感谢您的回复,我试着用commons beanutils 1.5运行代码,效果很好。1.8.3中可能有一个bug。