局部变量的值不用于

问题描述:

我有下面的代码,我得到一个恼人的警告局部变量的值不用于

局部变量读取动作的数据值不用于

它烦我......有人说忽略它......但我宁愿理解它,而不是盲目地忽略它。

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

只是你不使用缓冲区,因为该编译器没有看到该变量的任何意义,并且这是一个内存安全的做法 –

您应该使用局部变量,当您使用buffer在循环体中。因为,你只能安全地使用buffer中使用bytesRead字节(通常不是所有的东西都会在好的缓冲区边界处结束)。

+0

这样的事情? – merkman

+0

DataPacket dataPacket = null; – merkman

+0

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