Heim >Java >javaLernprogramm >Wie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um?
Lambda-Funktionen mit Ausnahmen in Java 8
In Java 8 können Lambda-Funktionen verwendet werden, um Methoden mit bestimmten Signaturen zu referenzieren. Wenn die referenzierte Methode jedoch eine geprüfte Ausnahme deklariert, kann die Definition der Lambda-Referenz eine Herausforderung sein.
Problem
Betrachten Sie die folgende Methode, die einen String als Argument verwendet und Gibt eine Ganzzahl zurück, kann jedoch eine IOException auslösen:
Integer myMethod(String s) throws IOException
Wie definieren wir eine Lambda-Referenz darauf? Methode?
Lösung
Es gibt zwei Hauptansätze für die Behandlung von Ausnahmen in Lambda-Referenzen:
1. Benutzerdefinierte funktionale Schnittstelle
Wenn Sie die Kontrolle über den Code haben, können Sie eine benutzerdefinierte funktionale Schnittstelle definieren, die die geprüfte Ausnahme deklariert:
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
Dadurch können Sie Verweise auf Methoden erstellen die geprüfte Ausnahmen auslösen:
void foo (CheckedFunction f) { ... }
2. Einschließen einer nicht geprüften Methode
Wenn das Ändern der Methodensignatur keine Option ist, können Sie die geprüfte Methode in eine Methode einschließen, die keine geprüfte Ausnahme deklariert:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch(IOException e) { throw new UncheckedIOException(e); } }
Sie können dann auf die umschlossene Methode verweisen:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Das obige ist der detaillierte Inhalt vonWie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!