Code: Select all
public OutputStream test(boolean condition) throws FileNotFoundException {
return condition ? null : new FileOutputStream("test.txt");
}
< /code>
Eclipse stellt Yellow Squiggles unter neue FileOutputStream ("test.txt") < /code> und zeigt mir die folgende Warnung: < /p>
Resource leak: '' is never closed< /code> < /p>
Das Seltsame ist, wenn ich die ternäre Operation entferne: < /p>
public OutputStream test() throws FileNotFoundException {
return new FileOutputStream("test.txt");
}
< /code>
Die Warnung geht weg. Methode schließen Sie den Stream (nach und nach, was ist der Sinn für die Rückgabe eines geschlossenen Streams?). Es macht dies sogar richtig, wenn ich das Ergebnis indirekt zurückgibt: < /p>
public OutputStream test() throws FileNotFoundException {
FileOutputStream result = new FileOutputStream("test.txt");
return result;
}
< /code>
(keine Warnungen hier) < /p>
Ist Eclipse also nur durch den ternären Betrieb verwirrt? Wenn ja, sollte ich dies als Fehler melden?public OutputStream test(boolean condition) {
return condition ? null : new ByteArrayOutputStream();
}
< /code>
Wie kommt es, dass es diese beiden Streams unterschiedlich behandelt? Beide sind direkte Nachkommen von OutputStream
Code: Select all
Closeable