Wie kommt es, generische Typ-parameter sagt "erweitert" nicht Vergleichbar "implementiert"?
Ich zu schreiben versucht, generische Funktion, entfernen Sie doppelte Elemente aus array.
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
//do quicksort
Arrays.sort(arr);
ArrayList<E> list = new ArrayList<E>();
int i;
for(i=0; i<arr.length-1; i++) {
if(arr[i].compareTo(arr[i+1]) != 0) { //if not duplicate, add to the list
list.add(arr[i]);
}
}
list.add(arr[i]); //add last element
return list;
}
Wie Sie sehen können, kann nicht passieren primitiven Typ wie int[] array, da ich mich vergleichen von Elementen, die von compareTo () - Methode, definiert in Vergleichbaren in-Schnittstelle.
Bemerkte ich die erste Zeile (Methodendeklaration):
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
Kommen, wie es sagt "erweitert Vergleichbar" ?
Vergleichbar ist eine Schnittstelle, also warum ist es nicht "implementieren Vergleichbar"? Dies ist das erste mal, dass ich schrieb generische Funktion, also ich bin bisschen verwirrt über solche Details. (alle Fragen, würde mich davon abhalten, verstehen..)
EDIT: Fand diesen Artikel zu diesem Thema.
http://www.tutorialspoint.com/java/java_generics.htm
implements extends extends
Möglich, Duplikat der Java generics - warum ist "extends T" sind erlaubt, aber nicht "implementiert T"?
InformationsquelleAutor masato-san | 2010-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie verwenden möchten, die Sache, die Sie gerade Schreibe ist als generische parameter
Die wildcard, die Sie reden, sind drei
Sie Methode Aussehen sollte
Für detali bitten besuchen auf dieser Seite
InformationsquelleAutor Damian Leszczyński - Vash
Dies ist nur die Konvention gewählt, für die Generika. Bei der Verwendung von bounded Typ-Parameter, die Sie verwenden, reicht (obwohl es könnte bedeuten, implementiert in einigen Fällen) oder super.
Können Sie selbst etwas tun, wie
<E extends Comparable<E> & Cloneable>
zu definieren, dass das Objekt, das ersetzt werden würden, die Typ-parameter implementieren sollten beide interfaces.InformationsquelleAutor Andrei Fierbinteanu
Für eine Sache, die
E
könnte eine Schnittstelle.Natürlich ist es ein Satz. Es hat ein Subjekt, verb und Objekt. Es ist auch eine korrekte Antwort. Was ist Ihr problem?
InformationsquelleAutor Tom Hawtin - tackline