Referenzen zuweisen und wird gleichzeitig ausgeführt

matze86

Bekanntes Mitglied
Hallo, ich habe folgenden Code:
Java:
class Beispiel{
    Beispiel add;
    
    Beispiel rueck() {
        System.out.println("vorher  " + add);
        add = new Beispiel();
        
        System.out.println("nachher " + add);
        return add;
    }}

public class test {
    public static void main(String[] args) {
        Beispiel ref = new Beispiel();
        for (int i = 0; i < 4; i++) {
            ref = ref.rueck();
            System.out.println("for Schleife");
        }
                
}
    
    }

Warum wird bei der Referenz Zuweisung 'ref = ref.rueck();' gleich die Methode 'rueck()' ausgeführt?
 
Der Befehl besagt doch:
Weise der Variable ref das zu, was ref.rueck() zurück gibt.

Du willst dem Geschäft das Geld geben, das Du aus dem Geldautomat bekommst. -> Ist doch klar: Erst muss das Geld aus dem Geldautomat kommen. Dann kannst Du es dem Geschäft geben zum einkaufen.
 
was soll das eigentlich ?
du erstellst ein neues Objekt.
rufst aus dem eine Methode auf. die Zuweisung ist eigentlich sinnlos.
rufst einfach die Methode drei mal auf.

das wird nie eine doppelte liste werden.
 
Genau, ich weise es zu, und es wird gleich ausgeführt und nicht nur zugewiesen.
Nein, das siehst Du falsch: Der Befehl besteht auf zwei Teilen:
a) ref = <Ausdruck>; -> Dies ist eine Zuweisung. Der Ausdruck soll ausgewertet werden. Zur Auswertung gehört u.U. auch die Ausführung von Methoden so da entsprechende Aufrufe sind.
b) ref.rueck() -> Dies ist der Ausdruck. Dieser wird ausgewertet. Da er nur aus einem Methodenaufruf besteht, wir dieser durchgeführt und das Ergebnis dann zugewiesen.
 
Du versuchst eine Liste zu machen.
Vor der for Schleife erstellst du ein Objekt deiner Klasse.
Im der Schleife rufst du recht vom ist gleich die Methode aus dem Objekt auf was du gerade erstellt hast.
In der methode erstellst du ein neues anderes Objekt das gibst du zurück und weißt es der Variablen zu.
So entsteht eine einfache Liste ohne einen Inhalt.
 
Tipp lasse dir die ref variable vor der Zuweisung und nach der Zuweisung ausgeben. Du wirst sehen das sie verschieden sind.
 

Neue Themen


Zurück
Oben