Java 这是资源泄漏还是误报?

Java 这是资源泄漏还是误报?,java,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"); } 注意:警告是“资源泄漏:out”从未关闭

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

注意:警告是“资源泄漏:out”从未关闭。

这肯定是假阳性,
out
正在分配
out1
out2
,并自动关闭。此外,在try块外看不到out。

这是一个假阳性。所有实例都已正确关闭


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

使用后不应关闭。似乎是误报。顺便说一句,Idea在这一行没有给出任何警告。可能是误报,因为这是一个新的。这是误报。我想,消除它将是一个PITA。您正在使用哪个IDE?Indigo Service Release 2并没有就此向我发出任何警告—try块之外的“不可见性”正是导致Eclipse评估潜在资源泄漏的原因。也就是说,在
out
变量的范围内,它永远不会关闭。。。