"return" ohne Argument?
*Markus
- java
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
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
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
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
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
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
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
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