这是资源泄漏还是误报?

时间:2013-06-07 14:08:41

标签: 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");
}

P.S。:警告是“资源泄漏:'out'永远不会关闭”。

2 个答案:

答案 0 :(得分:5)

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

很久以前我在Eclipse中关闭了那些与资源相关的警告。它们真的不可靠,因为有很多“明显”正确的控制流路径,Eclipse无法在没有实际执行的情况下被识别为“正确”......任何非平凡的代码都注定会产生这些误报。 / p>

答案 1 :(得分:1)

绝对是误报out被分配out1out2,自动关闭。此外,在try block外面看不到。