Java 转换列表<;对象[]>;列出<;字符串>;例外情况

Java 转换列表<;对象[]>;列出<;字符串>;例外情况,java,java-stream,classcastexception,Java,Java Stream,Classcastexception,我有一个包含对象(字符串)数组的列表: 我得到一个例外: java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.Object; (java.lang.String and [Ljava.lang.Object; are in module java.base of loader 'bootstrap') 以下是创建参数的方法: Query query = entityM

我有一个包含对象(字符串)数组的列表:

我得到一个例外:

java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.Object; (java.lang.String and [Ljava.lang.Object; are in module java.base of loader 'bootstrap')
以下是创建参数的方法:

 Query query = entityManager.createNativeQuery(sql);
 List<Object[]> params = query.getResultList();;
Query Query=entityManager.createNativeQuery(sql);
List params=query.getResultList();;
  • 对阵列进行流式处理
  • 将阵列展平为对象流
  • 过滤掉非字符串
  • 通过将剩余对象映射到字符串进行强制转换
  • 收集到一个列表中
import java.util.*;
导入java.util.stream.stream;
导入java.util.array;
导入java.util.List;
导入java.util.stream.collector;
公共类HelloWorld{
公共静态void main(字符串[]args){
对象[]a={“a”,“B”};
对象[]b={“C”,“D”};
对象[]c={“E”,“F”};
List params=new ArrayList();
参数。添加(a);
参数添加(b);
参数添加(c);
List str=params.stream()
.flatMap(数组::流).map(值->(字符串)值)
.collect(Collectors.toList());
for(字符串s:str){
系统输出打印项次;
}
}
}

你从哪里得到这个异常?在这个部件列表中results=params.stream()…@e2rabi你能告诉我你是如何创建
params
?你使用的是哪个java版本吗?我使用的是java 11@BuildSlayer我更新了我的问题这给了我收集器部分相同的异常。。。。。。在java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)中,我发现调试模式存在问题,parms包含对象列表,而不是对象数组列表,谢谢you@e2rabi那会有所不同。我修改了我的答案以符合更改。我发现调试模式存在问题。parms包含对象列表,而不是对象数组列表,谢谢
results.forEach(System.out::println);
java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.Object; (java.lang.String and [Ljava.lang.Object; are in module java.base of loader 'bootstrap')
 Query query = entityManager.createNativeQuery(sql);
 List<Object[]> params = query.getResultList();;
List<Object> params = List.of(1, 2,
                   "hello",
                   "computer",  new Object(), 4.32,
                   new Object[]{1,2});

List<String> strings = params.stream()
        .filter(ob -> ob instanceof String)
        .map(ob -> (String) ob)
        .collect(Collectors.toList(), "java");

System.out.println(strings);
[hello, computer, java]
import java.util.*;
import java.util.stream.Stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class HelloWorld{

     public static void main(String []args){
         
             Object[] a = { "A", "B" };
            Object[] b = { "C", "D" };
            Object[] c = { "E", "F" };
        
        List<Object[]> params  = new ArrayList();
        params.add(a);
        params.add(b);
        params.add(c);
       
       
       List<String> str = params.stream()
      .flatMap(Arrays::stream).map(value -> (String) value)
        .collect(Collectors.toList());
      
      for(String s:str){
          System.out.println(s);
          
      }
     }
     
     
}