2017-04-09 7 views
0

を使用していない私は、次のコードを持っていると私はそれが私を盗聴されているローカル変数bytesReadの値はローカル変数の値が

を使用していない迷惑な警告に

を取得しています...それを無視する人もいますが、盲目的に無視するよりもむしろ理解しています。

1)なぜこの警告が表示されますか。

2)次のコードを書き換えて警告が表示されないようにするにはどうすればよいですか?

 byte[] buffer = new byte[parameters.getSizeOfPacket() + DATA_PACKET_OVERHEAD_LENGTH]; 
     int bytesRead = -1; 
     //System.out.println("Ready to Read"); 
     while((bytesRead = in.read(buffer)) != -1) { 
       .... } 

ありがとうございます。

のEclipse IDE用のJava開発者

バージョン:Neon.2リリース(4.6.2)

ビルドID:20161208から0600

+1

まあ、警告は自己説明的です。コード内でその変数を使用するまで、引き続きメッセージを取得します。これまでに宣言して値を割り当てたのは –

+0

バッファを使用していないだけです。そのコンパイラはその変数の意味を理解していないため、メモリーセーフの実行です –

答えて

0

あなたはbufferを使用するときは、ローカル変数を使用する必要がありますループ本体内にあります。なぜなら、は安全にを使用することができるからです。bufferbytesReadバイトを使用することができます(一般的には、すべてがのバッファ境界で終了しません)。

+0

このようなものはありますか? – merkman

+0

DataPacket dataPacket = null; – merkman

+0

if(bytesRead == parameters.getSizeOfPacket()+ DATA_PACKET_OVERHEAD_LENGTH){ – merkman

関連する問題