Hi,
ich habe zwei Verständisfragen zu Interfaces.
Wieso ist eine Konstruktion wie die folgende nicht möglich?
Andererseits funktioniert folgendes:
Wieso ist es möglich Objekte vom Typ Comparable<String> einem Comparable-Objekt zuzuweisen, sodass anschließend in der Methode getSmallest() auf das ursprüngliche Comparable<String>-Objekt die Methoden compareTo(Object) aufrufen kann, obwohl die Klasse String nur compareTo(String) definiert?
ich habe zwei Verständisfragen zu Interfaces.
Wieso ist eine Konstruktion wie die folgende nicht möglich?
Java:
Comparable<String>[] c = {"eins","zwei"};
bzw.: Comparable<String>[] c = new Comparable<String>[5];
Andererseits funktioniert folgendes:
Java:
Comparable[] objects = new Comparable[2];
objects[0] = "String";
objects[1] = "String2";
System.out.println( (String) getSmallest(objects) );
--------------
public static Object getSmallest(Comparable[] objects){
Object smallest = objects[0];
for(int i = 1; i < objects.length; i++){
if(objects[i].compareTo(objects[i+1]) > 0){
smallest = objects[i];
}
}
}
Wieso ist es möglich Objekte vom Typ Comparable<String> einem Comparable-Objekt zuzuweisen, sodass anschließend in der Methode getSmallest() auf das ursprüngliche Comparable<String>-Objekt die Methoden compareTo(Object) aufrufen kann, obwohl die Klasse String nur compareTo(String) definiert?