【发布时间】:2019-03-06 13:50:47
【问题描述】:
你好,我在这里做错了什么
我想获取基础 ID,如果它不存在,则获取保险类型.. 代码 sn-ps 粘贴在下面.. 但我在 orElse 部分遇到错误,我什至尝试过 orElseGet() ...它说“Lambda的目标类型必须是一个接口”..
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());
}
【问题讨论】:
-
.orElse(getInsuranceType(insurance, companyInsurances)); -
我也试过了,我得到 .. orElse (java.lang.String) in Optional cannot be applied to (java.util.Optional
) -
是的。正确的!
getFoundationId(...).orElse(getInsuranceType(...).orElse(""));最好遵循@Ravinda 的回答 -
可能只是(相当相关)stackoverflow.com/questions/28514704/…的副本
标签: java java-8 java-stream