Ich bin relativ Anfänger Anfänger Kenntnisse in Advanced Java Generics skaliert. Ich wollte eine Schnittstelle so etwas wie dieseDefinieren Sie eine Schnittstelle mit mehreren gebundenen Typen von Java Generics
public interface Transformer {
<T extends String & List<String>> T transform(String input) throws
IOException;
}
Meine Implementierung der Klasse A definieren, wie unten dargestellt:
public Class A implements Transformer{
....
....
@Override
public <T extends String & List<String>> T transform(String input) throws IOException {
String response = "a";
return response; // compilation error "Incompatible Types: Required T but found java.lang.String"
}
}
Was ich haben will: Die Umsetzung Klasse in der Lage sein sollte, einen String-Eingang passieren und Rückgabetyp kann String oder eine Liste sein. Die Implementierungsklasse hat völlig die Freiheit, einen der Rückgabetypen zu wählen.
Frage: 1. Warum wird der Kompilierungsfehler "Inkompatible Typen: Erforderlich T aber gefunden java.lang.String" angezeigt?
Der Rückgabewert der Transformationsmethode muss einen String erweitern (den es seit String nicht final ist) und die List Schnittstelle implementieren. Ich bezweifle stark das ist etwas, das du wolltest ... du solltest deine Frage so umformulieren, dass dein Ziel klar ist ... –