Eclipse -Inkonsistenzen: Ressourcenleck: '' ist niemals geschlossenJava

Java-Forum
Anonymous
 Eclipse -Inkonsistenzen: Ressourcenleck: '' ist niemals geschlossen

Post by Anonymous »

Wenn ich den folgenden Code habe: < /p>

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 
und implementieren genau die gleichen Schnittstellen (

Code: Select all

Closeable
, spülbar , autococlosenbar ). Weiß es irgendwie, dass BytearrayoutputStream.close () ein No-op ist? Wenn ja, ist das fest codiert in die Sonnenfinsternis oder analysiert es tatsächlich die Quelle oder die Byte-Code, um dies herauszufinden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post