这是资源泄漏还是误报?

Kon*_*ner 7 java

Eclipse给出了关于"out"声明的警告.这是误报吗?

Random r = new Random();
try(PrintWriter out1 = new PrintWriter("one.txt");
    PrintWriter out2 = new PrintWriter("two.txt"))
{
  PrintWriter out = r.nextBoolean()?out1:out2;
  out.println("x");
}
Run Code Online (Sandbox Code Playgroud)

PS:警告是" 资源泄漏:'out'永远不会关闭 ".

Luk*_*der 5

这是误报.所有实例都已正确关闭.

我很久以前在Eclipse中关闭了那些与资源相关的警告.他们真的不可靠的,因为有那么多"显然是"正确的控制流动路径,不能确定为Eclipse的"正确的",而无需实际执行他们...任何不平凡的代码将注定有那些误报.


Grz*_*Żur 1

这肯定是误报out正在分配out1out2正在自动关闭。此外,out 在 try 块之外不可见。

  • try 块之外的“不可见性”正是导致 Eclipse 评估即将发生潜在资源泄漏的原因。即在“out”变量的范围内,它永远不会关闭...... (3认同)