tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von HonniCilest
  • 1 Beitrag von Jellysheep
  • 1 Beitrag von ronaldo84
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
491
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Steve222 Steve222 ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Ort
    Rheinland
    Beiträge
    46
    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
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    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.
    Steve222 bedankt sich. 
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  3. #3
    Steve222 Steve222 ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Ort
    Rheinland
    Beiträge
    46
    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
    Es ist kein Aufruf, sondern eine Art Festlegung, Zugehörigkeit.
    meinst.

    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
     

  4. #4
    Avatar von Jellysheep
    Jellysheep Jellysheep ist offline Mitglied Platin
    Registriert seit
    Jan 2009
    Ort
    Arbeitsspeicher
    Beiträge
    689
    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;
      }
    }
    Steve222 bedankt sich. 
    Grüße, Jellysheep

    Jeder Helfer freut sich über eine Bewertung oder ein Danke.

    Freiheit für die Gummibärchen, nieder mit den Tüten!
    Link :D

  5. #5
    Avatar von ronaldo84
    ronaldo84 ronaldo84 ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Berlin / Rudow
    Beiträge
    453
    Nein, das ist keine Rekursion. Da du das Gewicht in Integer castest wird die compareTo-Methode der Klasse Integer aufgerufen, nicht der Person1.
    Steve222 bedankt sich. 
    Bitte alle erledigten Themen abschliessen.

  6. #6
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    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

  1. SCHEME Rekursiver aufruf.
    Von Mikrowelle im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 10.01.11, 08:44
  2. Probleme mit rekursiver Funktion
    Von xtramen01 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.12.09, 16:25
  3. Objekte in TreeSet einfügen + compareTo
    Von MaLb im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 02.06.09, 07:37
  4. [MS SQL] rekursiver Algorythmus gesucht
    Von olly1882 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 31.03.05, 11:45
  5. rekursiver funktionsaufruf
    Von südpol im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.01.05, 13:29