Wie verwenden Sie die generische Funktion der interface-Methode geben Sie Parameter in einen lambda-Ausdruck
Im Versuch, erstellen Sie eine generische lambda-so ich keine Notwendigkeit, neu zu definieren, es ist für die einzelnen Typen. Zu tun, dass ich Zugriff auf die Typ-Parameter an die Funktion übergeben. Leider habe ich nicht finden, keine Dokumentation, wie das zu tun.
Dies ist ein Beispiel von, was ich tun will, sondern das vor der lambda-Ausdruck nicht kompilieren:
import java.util.ArrayList;
public class Test {
interface SolveFunction {
<In, Out> Out apply(In in);
}
public static void main(String...args) {
SolveFunction f = <In, Out> (In a) -> {
ArrayList<Out> list = new ArrayList<>();
return list;
};
System.out.println(f.<String, Integer>apply("Hi").size());
}
}
- Was wollen Sie genau tun? Es gibt viele Dinge in diesem code, der nicht kompiliert...
- Im Versuch zur Umsetzung des Divide and Conquer-Muster, die akzeptiert 4 Funktionen: Teilen, Lösen, Trivial und Kombinieren, hier ist das größere Stück code, warum ich möchte, Generika innerhalb des lambda dpaste.de/R6ew#L76 (code noch nicht getestet, da bricht es bei der Generika-wenn ich versuche, um es zu kompilieren)
- FYI, dies ist nicht für die Produktion von code und ich weiss, dass Java nicht inteded verwendet werden, die als eine funktionale Sprache.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst fügen Sie die Typ-Argumente zur Schnittstelle selbst:
Könnte man implementieren Sie eine Methode:
Die Sie dann verwenden können, wie die Umsetzung der lambda:
SolveFunction
- Schnittstelle, es gibt bereits eine Schnittstelle in der standard-Bibliothek, die genauso aussieht:java.util.function.Function<T, R>
.Ich bin mir nicht sicher über das, was Sie versuchen, verwenden Sie Ihre ArrayList, aber müssen Sie fügen Sie die type-Deklaration in der Schnittstelle. Das folgende Beispiel kompiliert:
String
undInteger
) und nicht-Typ-Parametern.