2013-06-07 9 views
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"); 
} 

P.S:警告は、 "リソースリーク: 'アウト'を閉じられることはありません" です。

+1

警告とはなんですか? –

+0

使用後は閉じないでください。 –

+2

**偽陽性と思われる**。 BTW「Idea」はその行に警告を出さない。 – Andremoniy

答えて

1

それは間違いなく偽陽性outout1または自動的に閉じられているout2割り当てられています。さらに、outはtryブロックの外側には見えません。

+3

tryブロックの外側にある「非可視性」は、潜在的なリソースリークがあるとEclipseが評価する原因となっています。私。 'out'変数の範囲内では決して閉じません。 –

5

偽陽性です。すべてのインスタンスが正しく閉じられています。

私はずっと前にEclipseでリソース関連の警告をオフにしました。実際にそれらを実行することなくEclipseによって「正しい」と識別することができない多くの「明らかに正しい」制御フロー・パスが存在するため、実際には信頼できません...これらの誤検出を避けるためには、

関連する問題