我试图通过以下方式在非静态上下文中加倍数组:
public class Test {
int[] data=new int[1];
public void Double(){
if(data == null){
int[] data=new int[1];
}
int[] data=new int[data.length*2];
}
public static void main(String[] args){
Test table = new Test();
table.data=new int[1];
}
}
javac不会编译它,因为它警告我
可能尚未初始化可变数据
即使它已经被初始化了,我怎么能解决这个问题?
答案 0 :(得分:2)
您在data
方法中声明了一个本地Double()
变量(实际上是在声明两个这样的变量),它隐藏了具有相同名称的实例变量。
因此,在声明中:
int[] data=new int[data.length*2];
在初始化本地data.length
变量之前,您正在访问data
。
将其更改为:
public void Double(){
if(data == null){
data=new int[1];
} else {
data=new int[data.length*2];
}
}
答案 1 :(得分:0)
你的代码完全没有意义。 data
在测试它时不可能为null,并且您声明并初始化超出范围的局部变量的下一行同样毫无意义,因此可以删除所有相关代码。