2009-04-13 7 views

risposta

94

esce semplicemente il metodo in quel punto. Una volta eseguito return, il resto del codice non verrà eseguito.

es.

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

Si noti che il compilatore è abbastanza intelligente per dirvi qualche codice non può essere raggiunto:

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

Capisco che il codice sia illustrativo, ma per le informazioni del genitore; Ho lavorato con persone che credono che ogni metodo dovrebbe avere una sola dichiarazione di ritorno. Non sono uno di loro, ma credo nel minimizzare il numero di resi il più possibile senza rendere il codice brutto nel farlo. – digitaljoel

+2

Sì, non è assolutamente qualcosa da abusare, ma a volte lo rende molto più semplice e può essere comunque molto leggibile. – CookieOfFortune

+2

Il mio modo preferito di rompere da cicli annidati :) –

22

Si può avere return in un metodo vuoto, basta non può ritorno alcun valore (come in return 5;), è per questo che lo chiamano un vuoto metodo di . Alcune persone terminano sempre esplicitamente i metodi void con un'istruzione return, ma non è obbligatorio. Si può essere utilizzato per lasciare una funzione presto, però:

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

Il linguaggio Java specification dice che si può avere di ritorno senza alcuna espressione se il metodo restituisce nulla.

2

Esso funziona come un cambio di funzione con un parametro specificato, eccetto che restituisce nulla, come non c'è nulla da restituire e il controllo viene passato al metodo chiamante.

2

esce la funzione e non restituisce nulla.

Qualcosa di simile return 1; sarebbe corretto poiché restituisce intero 1.

14

La parola apre semplicemente un frame dallo stack delle chiamate restituzione del controllo alla riga dopo la chiamata di funzione.

+6

Haha. Questa è una grande risposta, ma dubito che i principianti di Java possano davvero capire cosa stai cercando di dire. – franklin

1

visualizzare questo esempio, si desidera aggiungere alla lista condizionale. Senza la parola "return", tutti i if saranno eseguiti e aggiunti alla ArrayList!

Arraylist<String> list = new ArrayList<>(); 

    public void addingToTheList() { 

    if(isSunday()) { 
     list.add("Pray today") 
     return; 
    } 

    if(isMonday()) { 
     list.add("Work today" 
     return; 
    } 

    if(isTuesday()) { 
     list.add("Tr today") 
     return; 
    } 
} 
+0

ArrayList dovrebbe essere stato inizializzato come: ArrayList list = new ArrayList <>(); –