java - Java 流 ifPresent orElse /orElseGet
问题描述
你好我在这里做错了什么
我想获得基础 Id ,如果它不存在则获得 Insurance Type.. 代码片段粘贴在下面.. 但我在 orElse 部分收到错误我什至尝试过 orElseGet() ...它说“目标类型Lambda 必须是一个接口”..
String type = getFoundationId(companyInsurances).orElse(()->getInsuranceType(insurance, companyInsurances));
…</p>
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
使用以下方式简单地链接此类 s Optional.or
:
String type = getFoundationId(companyInsurances)
.or(() -> getInsuranceType(insurance, companyInsurances))
.orElse("defaultValue");
推荐阅读
- postgresql - Debezium 在初始同步后停止
- python - 一遍又一遍地重复,而不是在汤里重复一次
- c# - 通用数组作为方法中的参数
- php - 如何在php中解析文件名并用某个名称重命名
- apache-nifi - NiFi ListAzureBlobStorage 与 HTTP 代理和身份验证
- php - 如何使用 PHP MongoDB 驱动程序解释 mongodb 查询计划
- python - 使用 blob.download_as_string 从 Cloud Storage 读取数据
- r - 分析包含 30 个观测值的数据集
- azure - 访问 Azure Cosmos DB 以在 power shell 中使用 Query 获取特定文档时未经授权的访问
- javascript - Cookie 存在时的条件不起作用(Js、Html)