86 Stimmen

Welche Funktion hat das Schlüsselwort return in einer ungültigen Methode in Java?

Ich schaue auf ein Tutorial zur Wegfindung und ich bemerkte eine return Anweisung innerhalb einer void Methode (Klasse PathTest , Zeile 126):

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
    return;
}

Ich bin ein Anfänger in Java. Kann mir jemand sagen, warum es dort ist? So weit ich weiß, return innerhalb einer ungültigen Methode ist nicht erlaubt.

155voto

CookieOfFortune Punkte 13422

Die Methode wird an dieser Stelle einfach beendet. Sobald return ausgeführt wird, wird der Rest des Codes nicht ausgeführt.

z. B.

public void test(int n) {
    if (n == 1) {
        return; 
    }
    else if (n == 2) {
        doStuff();
        return;
    }
    doOtherStuff();
}

Beachten Sie, dass der Compiler intelligent genug ist, um Ihnen mitzuteilen, dass bestimmter Code nicht erreicht werden kann:

if (n == 3) {
    return;
    youWillGetAnError(); //compiler error here
}

7 Stimmen

Ich verstehe, dass Ihr Code illustrativ ist, aber zur Information der Eltern: Ich habe mit Leuten gearbeitet, die glauben, dass jede Methode nur eine einzige Rückgabeanweisung haben sollte. Ich gehöre nicht zu ihnen, aber ich glaube daran, die Anzahl der Rückgaben so weit wie möglich zu minimieren, ohne den Code dabei hässlich zu machen.

4 Stimmen

Ja, man sollte es nicht überstrapazieren, aber manchmal macht es die Sache viel einfacher und kann immer noch sehr gut lesbar sein.

7 Stimmen

Meine Lieblingsmethode, um aus verschachtelten Schleifen auszubrechen :)

31voto

Pesto Punkte 23518

Sie können haben return in einer ungültigen Methode, kann man einfach nicht einen beliebigen Wert zurückgeben (wie in return 5; ), deshalb nennt man es auch einen ungültig Methode. Manche Leute beenden ungültige Methoden immer ausdrücklich mit einer Return-Anweisung, aber das ist nicht zwingend erforderlich. Es peut kann jedoch zum vorzeitigen Verlassen einer Funktion verwendet werden:

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}

0 Stimmen

Warum können wir nicht die break stattdessen?

28voto

MahdeTo Punkte 10654

Mit dem Schlüsselwort wird einfach ein Rahmen vom Aufrufstapel entfernt und die Kontrolle an die auf den Funktionsaufruf folgende Zeile zurückgegeben.

12 Stimmen

Haha. Das ist eine tolle Antwort, aber ich bezweifle, dass Java-Anfänger wirklich verstehen würden, was Sie zu sagen versuchen.

0 Stimmen

@ElliotMok Schon gut. Wir fangen alle als Anfänger an!

0 Stimmen

Ist dies eine gute Praxis oder spielt es keine Rolle, ob wir schreiben return; oder nicht?

15voto

John Ellinwood Punkte 13961

Die Sprache Java Spezifikation sagt, dass Sie return ohne Ausdruck haben können, wenn Ihre Methode void zurückgibt.

5voto

Albert Punkte 538

Er beendet die Funktion und gibt nichts zurück.

Etwas wie return 1; wäre falsch, da es die ganze Zahl 1 zurückgibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X