Hi Leute!
Ich beschäftige mich seit ein paar Tagen mit Generics in Java und hab auch bis jetzt eigentlich alles verstanden. Dachte ich zumindestens...... Ich schreibe gerade eine eigene Sortierklasse, die generische statische Sortierfunktionen anbieten soll. Um diese Klasse testen zu können, hab ich mir schnell eine (zugegeben sinnlose) IntegerObject Klasse geschrieben:
Jetzt hab ich das Problem, dass die statischen Sortierfunktionen mit allen Objekten funktionieren sollen, die das Interface Comparable implementieren. Für so einen Fall gibt es ja die Wildcards. Aber leider schaffe ich nicht, dass das funktioniert. Ich bekomme einen Compilerfehler:
Sort.java:16: compareTo(capture of ?) in java.lang.Comparable<capture of ?> cann
ot be applied to (java.lang.Comparable<?>)
if (data[j + 1].compareTo(data[j]) == -1) {
^
1 error
Bin momentan ziemlich ratlos und für Hilfe dankbar. ???:L
lg.
Rupert
Ich beschäftige mich seit ein paar Tagen mit Generics in Java und hab auch bis jetzt eigentlich alles verstanden. Dachte ich zumindestens...... Ich schreibe gerade eine eigene Sortierklasse, die generische statische Sortierfunktionen anbieten soll. Um diese Klasse testen zu können, hab ich mir schnell eine (zugegeben sinnlose) IntegerObject Klasse geschrieben:
Code:
public class IntegerObject implements Comparable<IntegerObject>{
..........
public int compareTo(IntegerObject io) {
Jetzt hab ich das Problem, dass die statischen Sortierfunktionen mit allen Objekten funktionieren sollen, die das Interface Comparable implementieren. Für so einen Fall gibt es ja die Wildcards. Aber leider schaffe ich nicht, dass das funktioniert. Ich bekomme einen Compilerfehler:
Sort.java:16: compareTo(capture of ?) in java.lang.Comparable<capture of ?> cann
ot be applied to (java.lang.Comparable<?>)
if (data[j + 1].compareTo(data[j]) == -1) {
^
1 error
Code:
public class Sort {
public static void bubbleSort(Comparable<?> data[]) {
assert (data != null);
Comparable<?> temp = null;
for (int i = 0; i < data.length - 1; i++) {
for (int j = 0; j < data.length - i - 1; j++) {
if (data[j + 1].compareTo(data[j]) == -1) {
temp = data[j + 1];
data[j + 1] = data[j];
data[j] = temp;
}
}
}
}
}
Bin momentan ziemlich ratlos und für Hilfe dankbar. ???:L
lg.
Rupert