7

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

PS:警告是“资源泄漏:'out' is never closed ”。

4

2 回答 2

5

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

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

于 2013-06-07T14:25:29.103 回答
1

这绝对是误报out正在分配out1out2正在自动关闭。此外 out 在 try 块之外是不可见的。

于 2013-06-07T14:25:01.340 回答