3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
491
491
EMPFEHLEN
-
Hallo!

Einerseits kann ich meine Collection nach verschiedenen Kriterien sortieren, es klappt also alles
recht gut.
Andererseits frage ich mich ob bei #1 ein rekursiver Aufruf stattfindet.
In der API ist compareTo() bei interface Comparable mit einem variablen Typparameter versehen,
also so :
int compareTo(T o)
Eine ÜBERSCHREIBUNG von compareTo() wird gefordert wegen " implements Comparable<Person1>" und
das wäre eigentlich identische Signatur wie "int compareTo(T o)" ...!?
Code java:1 2 3 4 5 6
class Person1 implements Comparable<Person1>{ ...} ... public int compareTo(Person1 o){ return ((Integer)this.gewicht).compareTo(o.gewicht); // #1 }
Was für ein Aufruf ist in Zeile #1 , wenn es kein rekursiver Aufruf ist?
Danke für aufschlussreiche Erläuterungen.
Viele Grüße
Steve222
-
15.06.10 15:08 #2
Also wenn ich das richtig verstehe möchtest du eigentlich nur wissen, was ein Interface genau ist.
>> http://java.sun.com/docs/books/tutor...interface.html
Im Prinzip hast du dir die Frage eigentlich selbst schon beantwortet....
Code :1
Eine ÜBERSCHREIBUNG von compareTo() wird gefordert
Es ist kein Aufruf, sondern eine Art Festlegung, Zugehörigkeit.Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Hallo HonniCilest,
und Danke.
Was ein interface ist und was dessen Zweck ist, weiß ich, denke ich, ganz gut.
Ich bin der Ansicht, dass in Zeile 3 bis 5 die geforderte Überschreibung von compareTo() ist und
verstehe nicht was Du mit
meinst.Es ist kein Aufruf, sondern eine Art Festlegung, Zugehörigkeit.
Nach "return" kann und darf auch ein Methodenaufruf stehen und ich sehe
"((Integer)this.gewicht).compareTo(o.gewicht)" eher als Aufruf als sonstwas anderes.
viele Grüße
Steve222
-
15.06.10 16:50 #4
Bei #1 steht kein rekursiver Aufruf. Hier werden statt der beiden Klasseninstanzen (zwei Objekte der Klasse Person1) nur die Werte der Variablen "gewicht" verglichen.
Ein rekursiver Aufruf würde die Funktion selbst nochmals ausführen. Kleines Beispiel:
Code java:1 2 3 4 5 6 7 8 9
int mul(int x, int i){ if(i>0){ return mul(x, i-1)+x; }else if(i<0){ return -mul(x, -i); }else{ return 0; } }
-
15.06.10 16:51 #5
Nein, das ist keine Rekursion. Da du das Gewicht in Integer castest wird die compareTo-Methode der Klasse Integer aufgerufen, nicht der Person1.
Bitte alle erledigten Themen abschliessen.
-
15.06.10 17:12 #6
Tut mir Leid ich sehe jetzt grad erst den Kommentar hinter deiner Zeile 4, ich bin die ganze Zeit davon ausgegangen du meinst deine erste gepostete Zeile, daher war ich so verwirrt

Es ist der Aufruf der gleichnamigen Methode einer anderen Klasse. Diese Klasse (Integer) implementiert aber auch das Interface Comparable, wodurch es auch die Methode compareTo besitzen muss. Und das meine ich mit "Festlegung". Wenn du weißt, dass eine Klasse das Interface implementiert, so weißt du sie besitzt auch die Methode(n).
Wie Ronaldo schon sagt, ein rekursiver Aufruf wäre es nur, wenn es die Methode der selben Klasse ist und nicht einfach nur den gleichen Namen trägt.Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
Ähnliche Themen
-
SCHEME Rekursiver aufruf.
Von Mikrowelle im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 10.01.11, 08:44 -
Probleme mit rekursiver Funktion
Von xtramen01 im Forum PHPAntworten: 1Letzter Beitrag: 16.12.09, 16:25 -
Objekte in TreeSet einfügen + compareTo
Von MaLb im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 2Letzter Beitrag: 02.06.09, 07:37 -
[MS SQL] rekursiver Algorythmus gesucht
Von olly1882 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 31.03.05, 11:45 -
rekursiver funktionsaufruf
Von südpol im Forum PHPAntworten: 1Letzter Beitrag: 20.01.05, 13:29





Zitieren
Login





