Hey,
ich hab mal wieder eine Verständnisfrage:
Ich hab vor kurzem folgenden Code geschrieben, als es um das Vergleichen von beliebigen Datentypen auf Größe ging:
Eigentlich soweit alles klar, nur ist mir aufgefallen, das ich eine Zeile wie diese
schon oft verwendet habe, ohne eigentlich genau zu verstehen, was da passiert und warum das funktioniert.
Comparable ist ja ein Interface und keine Klasse.
Nun frage ich mich:
Wie läuft das intern?
Wieso kann ich ein Objekt auf ein Interface casten?
Das ich ein Objekt auf ein anderes Objekt casten kann ich ja verständlich, aber wieso auf ein Interface, welches doch keinen konkreten Typ hat?
ich hab mal wieder eine Verständnisfrage:
Ich hab vor kurzem folgenden Code geschrieben, als es um das Vergleichen von beliebigen Datentypen auf Größe ging:
Code:
private static Object getArrMax(Object[] arr) {
// start with first value
Object max = arr[0];
for(int i = 0; i < arr.length; i++) {
if(((Comparable) arr[i]).compareTo(max) > 0) {
max = arr[i];
}
}
return max;
}
Eigentlich soweit alles klar, nur ist mir aufgefallen, das ich eine Zeile wie diese
Code:
if(((Comparable) arr[i]).compareTo(max) > 0) {
schon oft verwendet habe, ohne eigentlich genau zu verstehen, was da passiert und warum das funktioniert.
Comparable ist ja ein Interface und keine Klasse.
Nun frage ich mich:
Wie läuft das intern?
Wieso kann ich ein Objekt auf ein Interface casten?
Das ich ein Objekt auf ein anderes Objekt casten kann ich ja verständlich, aber wieso auf ein Interface, welches doch keinen konkreten Typ hat?