这是针对类似问题的规范性问题和答案,其中问题是由阴影引起的.
我在我的类中定义了两个字段,一个是引用类型,另一个是基本类型.在类的构造函数中,我尝试将它们初始化为一些自定义值.
当我稍后查询这些字段的值时,它们返回Java的默认值,null对于引用类型,0表示基元类型.为什么会这样?
这是一个可重复的例子:
public class Sample {
public static void main(String[] args) throws Exception {
StringArray array = new StringArray();
System.out.println(array.getCapacity()); // prints 0
System.out.println(array.getElements()); // prints null
}
}
class StringArray {
private String[] elements;
private int capacity;
public StringArray() {
int capacity = 10;
String[] elements;
elements = new String[capacity];
}
public int getCapacity() {
return capacity;
}
public String[] getElements() {
return elements;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望getCapacity()返回值10并getElements()返回正确初始化的数组实例.