Ich habe eine einfache generische SchnittstelleGenerisches Interface verhält sich nicht wie erwartet
public interface Person<T> {
T foo(T other);
}
und eine Klasse
public class Data<T extends Person> {
public void doSomething(List<T> data){
data.stream().reduce((a, b) -> (T)a.foo(b));
}
}
, wenn ich mit der Funktion foo
Verwendung reduzieren, die den generischen Typ zurückzukehren T
annehmen ist Der Compiler sagt, dass es nicht zurückgegeben werden kann, da es sich um einen falschen Rückgabetyp handelt.
Aber wie können Sie sehen, die Methode foo
bekommt und zurück T
?
auch wenn ich Autovervollständigen mit meinem Arbeitsplatz myObj.foo(obj)
Ich sehe, dass der Rückgabetyp und der Parameter-Typ ist ein Objekttyp. kann mir jemand erklären, warum es passiert, warum es nicht von einem T
Typ?