【发布时间】:2020-05-01 23:48:12
【问题描述】:
这是针对类似问题的规范问答,其中问题是由于阴影.
我在我的类中定义了两个字段,一个是引用类型,一个是原始类型。在类的构造函数中,我尝试将它们初始化为一些自定义值。
当我稍后查询这些字段的值时,它们返回 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;
}
}
我希望getCapacity() 返回值 10,getElements() 返回正确初始化的数组实例。
【问题讨论】:
标签: java constructor field