*Markus: "return" ohne Argument?

Hallo,

ich habe wohl eine Grundlagen-Wissenslücke. Was genau bedeutet es, wenn ein "return" ohne einem Wert ausgeführt wird?
zB hier....

  
if (dbImage == null)  {  
   dbImage = createImage(PWIDTH, PHEIGHT);  
   if (dbImage == null) {  
      System.out.println("dbImage is null");  
      return;  
   }  
   else  
      dbg2D = (Graphics2D) dbImage.getGraphics();  
}  

Markus

  1. Hi

    Hallo,

    ich habe wohl eine Grundlagen-Wissenslücke. Was genau bedeutet es, wenn ein "return" ohne einem Wert ausgeführt wird?

    return gibt normalerweise einen Wert zurück und beendet dann die Funktion. Ohne Rückgabewert wird eben nur die Funktion beendet, die Funktion gibt nichts bzw. undefined zurück

    mfg
    Genie

    1. Hallo,

      return gibt normalerweise einen Wert zurück und beendet dann die Funktion. Ohne Rückgabewert wird eben nur die Funktion beendet, die Funktion gibt nichts bzw. undefined zurück

      Die Funktion wird nach der Durchführung auch beendet, also wo ist genau der Unterschied?

      Markus

      1. Hi

        Die Funktion wird nach der Durchführung auch beendet, also wo ist genau der Unterschied?

        mit return wird sie schon vorher beendet. Da ich kein Java kann, versuch ich es mit einem kleinem JavaScript
        [code lang=javascript]
        function test()
        {
         alert("hinweis 1");
         return;
         alert("hinweis 2");
        }[/lang]

        der 2. alert wird hier nie ausgeführt, da return die funktion schon vorher beendet. ohne das return wird auch der 2. alert ausgeführt, die funktion wird erst beim } beendet

        mfg
        Genie

  2. Hallo,

    ich habe wohl eine Grundlagen-Wissenslücke. Was genau bedeutet es, wenn ein "return" ohne einem Wert ausgeführt wird?

    http://www.galileocomputing.de/openbook/javainsel6/javainsel_02_007.htm#Xxx1001488

    if (dbImage == null)  {
       dbImage = createImage(PWIDTH, PHEIGHT);
       if (dbImage == null) {
          System.out.println("dbImage is null");
          return;
       }
       else
          dbg2D = (Graphics2D) dbImage.getGraphics();
    }

    
    >   
      
    "Jede Methode in Java ist typisiert. Der Typ einer Methode wird zum Zeitpunkt der Definition festgelegt und bestimmt den Typ des Rückgabewerts." Die Frage ist hier welchen Typ die Methode hat.  So wie es aussieht ist der Typ hier "void", also soll die Methode nichts zurückgeben. Bei der Überprüfung soll sie frühzeitig abgebrochen werden und eben nichts zurückgeben, daher: "return;"  
      
    Grüße  
    Thomas
    
    1. Hallo,

      ok danke euch. Jetzt ist alles klar.

      Markus

  3. Hi,

    if (dbImage == null)  {
       dbImage = createImage(PWIDTH, PHEIGHT);
       if (dbImage == null) {
          System.out.println("dbImage is null");
          return;
       }
       else
          dbg2D = (Graphics2D) dbImage.getGraphics();
    }

      
    Zusätzlich zum gesagten:  
      
    das "else" ist überflüssig - durch das return im if-Teil wird auch bei  
      
    ~~~java
      
       if (dbImage == null) {  
          System.out.println("dbImage is null");  
          return;  
       }  
       dbg2D = (Graphics2D) dbImage.getGraphics();  
    
    

    das getGraphics nur ausgeführt, wenn dbImage nicht null ist.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo,

      das "else" ist überflüssig - durch das return im if-Teil wird auch bei

      if (dbImage == null) {
            System.out.println("dbImage is null");
            return;
         }
         dbg2D = (Graphics2D) dbImage.getGraphics();

      
      >   
      > das getGraphics nur ausgeführt, wenn dbImage nicht null ist.  
        
      Und hierzu noch ergänzend:  
      Anständige IDEs, z.B. Eclipse, aber sicherlich auch IntelliJ IDEA mäkeln  
      ein solches Konstrukt an. Es wird durch statische Code-Analyse überprüft,  
      welcher Programmfluß eingeschlagen kann. Der Ergebnis ist, daß das  
      'else' unnötig ist und entfernt werden kann, was z.B. als Warnung angezeigt  
      wird.  
        
      Gruß  
      Slyh  
      
      
      1. Glück auf!

        das "else" ist überflüssig - durch das return im if-Teil wird auch bei das getGraphics nur ausgeführt, wenn dbImage nicht null ist.
        Und hierzu noch ergänzend:
        Anständige IDEs, z.B. Eclipse, aber sicherlich auch IntelliJ IDEA mäkeln ein solches Konstrukt an.

        Und noch ergänzend: M.W. muss u.a. dieses Warning in Eclipse erst aktiviert werden, über Window->Prefernces->Java->Compiler->Errors/Warning, wo man auch noch ne ganze Menge andere interessanter Einstellmöglichkeiten dazu findet.

        Gruß,
        der Juve