2017-06-19 5 views
-1

Ich habe unten Code in einigen Codebasen gesehen, und ich bin mir nicht sicher, wie wir Optional für einen String-Rückgabetyp zurückgeben können.Java 8 Optionaler Rückgabetyp

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

Wo denken Sie, dass Sie eine 'Optional' zurückgeben? Warum denkst du das? –

+0

Es ist unklar, was Sie hier fragen. –

+0

@Stirios Delimanolis, ich verstehe, dass, wenn Vorlage leer ist, wird es "TEMPLATE_2" zurückgeben, aber wenn es nicht leer ist, wird es Vorlage zurückgeben, die optional ist. – NewQueries

Antwort

4

Obwohl die Zeile liest als „Rückkehr template [wenn möglich], oder auch "TEMPLATE_2" zurückkehren“, die Optional selbst ist eigentlich nie zurückgegeben. Es ist nur ein Aufruf an Optional.orElse(), die den internen Wert zurückgibt, wenn es vorhanden ist, andernfalls gibt es den übergebenen Wert zurück. Beide sind vom Typ String, daher ist es eine gültige Rückgabeanweisung.

Als eine Randnotiz, in Ihrem konkreten Beispiel Optional ist nicht wirklich notwendig. Sie können einen einfachen Null-Test verwenden oder Map.getOrDefault():

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

danke yeah, ich habe verwirrt. – NewQueries

+0

das ist großartig! Danke noch einmal :) – NewQueries

Verwandte Themen