2016-10-13 2 views
1

Ich bin mit einem einfachen Problem stecken: Ich habe eine java.util.Optional und möchte die orElseThrow Methode verwenden, um eine Ausnahme zu werfen, wenn Wert nicht vorhanden ist. Allerdings kann ich in Xtend nicht die richtige Syntax dafür finden. In Java würde ich tun:Was ist die richtige Syntax für Optional.orElseThrow in Xtend?

Optional<String> host = ... // get from some method 
host.orElseThrow(() -> new IllegalArgumentException("Host is not provided")); 

Aber das kompiliert nicht in Xtend. Die Fehlermeldung in Eclipse ist wie folgt aus (wo MyClass der Name meiner benutzerdefinierten Klasse ist):

Multiple markers at this line 
- Type mismatch: cannot convert from Pair<MyClass, IllegalArgumentException> to Supplier<? extends Throwable> 
- no viable alternative at input ')' 

Bitte um Hilfe!

Antwort

3

Versuchen Sie so etwas wie:

val Optional<String> host = ... // get from some method 
host.orElseThrow[new IllegalArgumentException("Host is not provided")] 

Lesen Sie die Dokumentation über lambda expressions.

(-> ist ein Operator in Xtend, aber es ist nicht auf Lambda-Ausdrücke verwendet. In die Dokumentation über operators See und für den Pair Operator. Suche)

+0

Dank! Diese Syntax funktioniert! Mit Hilfe des Links kann auch eine andere Notation verwendet werden: host.orElseThrow (| new IllegalArgumentException ("Host is not included")) – Vivit

Verwandte Themen