Java 流 ifPresent orElse/orElseGet

标签 java java-8 java-stream

你好,我在这里做错了什么

我想获取基础 Id ,如果它不存在,则获取保险类型..代码片段粘贴在下面..但我在 orElse 部分收到错误,我什至尝试过 orElseGet() ...它说“Lambda 的目标类型必须是一个接口(interface)”..

String type = getFoundationId(companyInsurances).orElse(()->getInsuranceType(insurance, companyInsurances));

private Optional<String> getInsuranceType(Insurance insurance, List<CompanyInsurance> companyInsurances) {
    return InsurancePeriodHelper.findFirstCompanyInsuranceOfType(companyInsurances, CompanyInsuranceType.POLICY_HOLDER.getValue())
             .map(companyInsurance-> insurance.getProduct());
}

private Optional<String> getFoundationId(List<CompanyInsurance> companyInsurances) {
    return InsurancePeriodHelper.findFirstCompanyInsuranceOfType(companyInsurances, CompanyInsuranceType.FOUNDATION.getValue())
            .map(companyInsurance -> companyInsurance.getCompany().getFoundationIdentifier().toString());
}

最佳答案

使用 Java-9 及更高版本,您可以使用 Optional.or 简单地链接此类 Optional。如:

String type = getFoundationId(companyInsurances)
        .or(() -> getInsuranceType(insurance, companyInsurances))
        .orElse("defaultValue");

关于Java 流 ifPresent orElse/orElseGet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55024701/

相关文章:

java - 迁移 Ant Gradle - Eclipse 中的类路径和构建路径问题

java - 如何在TimePickerDialog中显示额外1小时

java - ForkJoinPool.commonPool() 是否等于没有池?

java - 有没有办法使用 Java Stream API 来过滤出现一定次数的值?

Java JAI - 错误 : One factory fails for the operation "Mosaic"

java - 重命名主 Activity 后出错

java - Spring 4.1.9 不适用于 Java 8

java - 使用 Optional 时遇到 NullPointerException

java stream sort() object to descended set of integers 失败

Java 8 Stream API如何重用自定义方法