【问题标题】:Special Scenario : java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;特殊场景:java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 [Ljava.lang.String;
【发布时间】:2020-09-09 14:05:54
【问题描述】:

我只是想删除以下异常。 java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 [Ljava.lang.String; 请帮帮我。

我需要将它转换为 List。我该如何处理?

  List<Object[]> values =  query.getResultList();
    List<String[]> strings = new ArrayList<>();
    for (Object[] object : values) {
        strings.add((String[]) object);
    }

值:= [obj1,obj2,obj3]

obj1 = "1", "01";
obj2 = "1", "02";
obj3 = "1:, "03";

【问题讨论】:

  • 您是否尝试过强制转换对象数组的每个元素?我的意思是更深的铸造。
  • 是的。这最终是我需要的,但没有发生。给出了同样的例外..... Map> resultMap = values.stream().collect(Collectors.groupingBy (o -> (o)[0].toString(), Collectors.mapping(o -> (o)[1].toString(), Collectors.toList())));

标签: java arrays object arraylist casting


【解决方案1】:

我认为你应该使用 System.arraycopy

package com.lsk.backend;


import java.util.*;
import java.util.List;


/**
 * @ClassName : Test  //className
 * @Description :   //description
 * @Author : shikai.liu  //author
 * @Date: 2020-08-27 09:13  //Date
 */
public class Test {
    public static void main(String[] args) {
        List<Object[]> values =  getResultList();
        List<String[]> strings = new ArrayList<>();
        for (Object[] object : values) {
            String[]dst=new String[object.length];
            System.arraycopy(object,0,dst,0,dst.length);
            strings.add(dst);
        }
        System.out.println(strings);
    }
    public static List<Object[]>getResultList(){
        Object[][]result={
                {
                    "0","1"
                },
                {
                        "0","2"
                },
                {
                        "0","3"
                },
        };
        List<Object[]>ss=Arrays.asList(result);
        return ss;
    }

}

【讨论】:

    【解决方案2】:
    List<Object[]> values =  query.getResultList();
    List<String[]> strings = new ArrayList<>();
    values.forEach(object -> {
       String [] stringArray = new String[object.length];
       System.arraycopy(object, 0, stringArray, 0,object.length);
       strings.add(stringArray);
    });
    

    【讨论】:

      【解决方案3】:

      这终于对我有用了

      values.forEach(o->{ strings.add(Arrays.copyOf(o, o.length, String[].class));});
      

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 2015-02-01
        • 1970-01-01
        • 2016-07-23
        • 2015-06-21
        相关资源
        最近更新 更多