我遇到了以下问题:

如果我将流中的一个对象映射到Java中的一个特定类,Java流API在映射后不会识别特定对象,并且仍然假定它是一个对象.我做错了什么?有没有一种方法可以解决这个问题,而不存在潜在的类强制转换异常?

下面是代码示例:

public class MyMapper {

        MyMapper() {
            Object someObject = new Person();
            final var listOfObjects = List.of(someObject);
            final var listOfPerson = toListOfPerson(listOfObjects);
        }

        List<Optional<Person>> toListOfPerson(Object object) {
            return ((List) object).stream()
                           .map(this::toPerson)
                           .collect(Collectors.toList());
        }

        Optional<Person> toPerson(Object object) {

            if (object instanceof Person) {
                return Optional.of((Person) object);
            }
            return Optional.empty();
        }

        public class Person {}
}

推荐答案

将其转换为一个键入的列表,然后您的.map(this::toPerson)将"接受"该列表中的元素

List<Optional<Person>> toListOfPerson(Object object) {
            return ((List<Object>) object).stream()
                    .map(this::toPerson)
                    .collect(Collectors.toList());
    }

Java相关问答推荐

Java 8中的多个字段和计数

在springboot 3中,当我调用api endpoint时,会出现404

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

我不能再在Android Studio Hedgehog上用Java语言创建新项目了吗?

使SLF4J在Android中登录到Logcat,在测试中登录到控制台(Gradle依赖问题)

如何在antlr4中跳过所有反斜杠-换行符而保留换行符?

将PNG转换为位图自定义十六进制字符串

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

没有使用Lombok生成的参数

如何配置空手道以使用FeignClient或RestTemplate代替ApacheHttpClient

如何在Java springboot中从一个端点发送多个时间响应?

A.ForEach与For(类型a:集合)

对角线填充二维数组

如何使用Java ZoneID的区域设置?

如何以事务方式向ibmmq发送消息

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序

Java中计算大n和k值模10^9+7的二项式系数的乘法公式输出错误值

如何使用Jackson读取以方括号开头的JSON?

睡眠在 Spring Boot 中

有没有办法仅将 JComboBox 中的选定项目居中(因此保持组合框中的所有项目左对齐)