Java 8 可选的返回类型

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)

shm*_*sel 5

尽管该行读作“返回template[如果可能],否则返回"TEMPLATE_2"”,但Optional实际上从未返回过它本身。它只是对 的调用Optional.orElse(),如果存在则返回内部值,否则返回传入的值。两者都是 类型String,因此它是一个有效的返回语句。

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

return lenderAndTemplateMap.getOrDefault("LENDER_1", "TEMPLATE_2");
Run Code Online (Sandbox Code Playgroud)