Специальный сценарий: java.lang.Исключение ClassCastException: [Ljava.lang.Объект; не может быть преобразован в [Ljava.lang.Строку;

#java #arrays #object #arraylist #casting

#java #массивы #объект #arraylist #Кастинг

Вопрос:

Я просто пытаюсь удалить указанное ниже исключение. java.lang.Исключение ClassCastException: [Ljava.lang.Объект; не может быть преобразован в [Ljava.lang.Строку; Пожалуйста, помогите мне здесь.

Мне нужно преобразовать его в List<String[]>. Как я должен с этим справиться?

   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»;

Комментарии:

1. Вы пробовали приводить каждый элемент массива объектов? Я имею в виду более глубокое приведение.

2. ДА. Это, в конечном счете, мне нужно, чего не происходит. выдал такое же исключение ….. Map<Строка, Список<строка>> resultMap = values.stream().collect(Коллекторы.groupingBy (o -> (o)[0].toString(), Коллекторы.mapping(o -> (o)[1].toString(), коллекторы. ToList())));

Ответ №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));});