我在一些代码库中看到了下面的代码,我不知道如何为String返回类型返回Optional。
public String generateTemplate() {
Optional<String> template = Optional.ofNullable(lenderAndTemplateMap.get("LENDER_1"));
return template.orElse("TEMPLATE_2");
}
答案 0 :(得分:4)
虽然该行显示为“返回template
[如果可能],或者返回"TEMPLATE_2"
”,但Optional
本身从未实际返回。它只是对Optional.orElse()
的调用,如果它存在则返回内部值,否则返回传入的值。两者都是String
类型,因此它是有效的返回值言。
作为旁注,在您的具体示例中,Optional
并不是必需的。您可以使用简单的空检查或Map.getOrDefault()
:
return lenderAndTemplateMap.getOrDefault("LENDER_1", "TEMPLATE_2");