我在IDE上遇到警告(JAVA NetBeans)并且在运行时出错,我不明白我做错了什么。
警告是关于局部变量的隐藏字段,我只想创建一个65536位的布尔数组。
public class Main
{
private static boolean[] BusyDevices ;
/* main entry point */
public static void main(String argv[])
{
boolean BusyDevices[]=new boolean[65536];//<-Here the warning
}
public static boolean isDeviceBusy(String deviceIDx)
{
if(deviceIDx.length()>4 || deviceIDx.length()<4)
{
return false;
}
try
{
return BusyDevices[Integer.parseInt(deviceIDx, 16)];
}
catch(Exception e)
{
Print.logException("Error deviceIDx:" + deviceIDx, e);
return false;
}
}
}
我认为在调整布尔数组大小时我做错了;或者可能是转换错误? 另外我需要从处于假状态的所有位开始,这是默认状态吗?。
答案 0 :(得分:2)
您有两个同名BusyDevices
的变量,因为这个问题正在发生,因为类级别变量与main
方法变量冲突。
尝试更改以下行中的变量名称:
boolean BusyDevices[]=new boolean[65536];//<-Here the warning
as
BusyDevices=new boolean[65536];//No duplicate variable now, variable type declation is not required
答案 1 :(得分:1)
您要在此处声明名为Main
BusyDevices
的静态字段
private static boolean[] BusyDevices ;
您在此处声明类main
的静态方法Main
中具有相同名称的局部变量
boolean BusyDevices[]=new boolean[65536];
在这种情况下,局部变量声明优先,&#34;隐藏&#34;或者&#34;阴影&#34;班级的领域
您可能打算这样做,以初始化字段(而不是局部变量)
BusyDevices = new boolean[65536];