Java 8可选的返回类型

时间:2017-06-19 23:47:15

标签: java java-8 optional

我在一些代码库中看到了下面的代码,我不知道如何为String返回类型返回Optional。

    public String generateTemplate() {
         Optional<String> template = Optional.ofNullable(lenderAndTemplateMap.get("LENDER_1"));
         return template.orElse("TEMPLATE_2");
    }

1 个答案:

答案 0 :(得分:4)

虽然该行显示为“返回template [如果可能],或者返回"TEMPLATE_2"”,但Optional本身从未实际返回。它只是对Optional.orElse()的调用,如果它存在则返回内部值,否则返回传入的值。两者都是String类型,因此它是有效的返回值言。

作为旁注,在您的具体示例中,Optional并不是必需的。您可以使用简单的空检查或Map.getOrDefault()

return lenderAndTemplateMap.getOrDefault("LENDER_1", "TEMPLATE_2");