java.util.Collections
Ich habe gerade die Implementierung der Java 7- Klasse durchlaufen und etwas gesehen, das ich nicht verstehe. max
Warum ist in der Funktionssignatur T
begrenzt durch Object
?
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
max
scheint gut zu funktionieren, wenn das gebundene Objekt weggelassen wird.
public static <T extends Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
Gibt es tatsächlich Situationen, in denen die Grenze einen Unterschied macht? Wenn ja, geben Sie bitte ein konkretes Beispiel an.