New*_*ies 1 java optional java-8
我在一些代码库中看到了下面的代码,我不确定如何为 String 返回类型返回 Optional 。
public String generateTemplate() {
Optional<String> template = Optional.ofNullable(lenderAndTemplateMap.get("LENDER_1"));
return template.orElse("TEMPLATE_2");
}
Run Code Online (Sandbox Code Playgroud)
尽管该行读作“返回template[如果可能],否则返回"TEMPLATE_2"”,但Optional实际上从未返回过它本身。它只是对 的调用Optional.orElse(),如果存在则返回内部值,否则返回传入的值。两者都是 类型String,因此它是一个有效的返回语句。
作为旁注,在您的具体示例Optional中并不是真正必要的。您可以使用简单的空检查或Map.getOrDefault():
return lenderAndTemplateMap.getOrDefault("LENDER_1", "TEMPLATE_2");
Run Code Online (Sandbox Code Playgroud)