我试图通过以下方式在非静态上下文中将数组加倍:
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 不会编译它,因为它警告我
variable data might not have been initialized
即使它显然已经初始化,我该如何解决这个问题?
最佳答案
您在 Double()
方法中声明了一个本地 data
变量(实际上您正在声明两个这样的变量),这隐藏了具有相同名称的实例变量。
因此,在声明中:
int[] data=new int[data.length*2];
您正在初始化本地 data
变量之前访问 data.length
。
将其更改为:
public void Double(){
if(data == null){
data=new int[1];
} else {
data=new int[data.length*2];
}
}
关于java - 非静态时变量初始化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815410/