Im Zusammenhang mit that Frage.Warum können wir keine Platzhalter für die Methode mit zwei Parametern erfassen?
Ich weiß über Wildcard-Capturing. Zum Beispiel werden die folgenden könnten zum Umkehren einer Liste verwendet:
public static void reverse(List<?> list) { rev(list); } //capturing the wildcard
private static <T> void rev(List<T> list) {
List<T> tmp = new ArrayList<T>(list);
for (int i = 0; i < list.size(); i++) {
list.set(i, tmp.get(list.size()-i-1));
}
}
Jetzt versuche ich die gleiche Sache für diese Art von Situation zu schreiben:
private int compare (Comparable<?> upper, Comparable<?> lower){
return comp(upper, lower); //The method comp(Comparable<T>, Comparable<T>) is not applicable for the arguments (Comparable<capture#5-of ?>, Comparable<capture#6-of ?>)
}
private <T> int comp(Comparable<T> upper, Comparable<T> lower){
return upper.compareTo((T) lower);
}
erwartete ich, dass es war in Ordnung zusammengestellt auch. Ist es möglich, Wildacrds für Methoden mit zwei oder mehr Parametern auf diese Weise zu erfassen?
Also können wir einfach den socnt type-Parameter zur Vergleichs-Methode hinzufügen. Aber es wird sehr unsicher aussehen. Welche Art von Problemen werden wir damit wohl bekommen? – user3663882
Ich meine 'private int Comp (vergleichbar oberen, vergleichbar unteren)' –
user3663882
Wenn Sie die Typparameter zwischen Methoden teilen möchten, entweder den Typ-Parameter-Klasse-Bereich, oder führen Sie die gleiche obere Grenze für beide Sie. –