Java 数组引用

Java 数组引用,java,arrays,Java,Arrays,如果我创建一个变量数组: public String a; public String b; public String c; public String[] d = {a,b,c}; 它将包含{null,null,null} 如果我这样做: a = "5"; System.out.println(d[0]); 由于初始化d时a为null,因此输出将为null 有没有办法创建一个“引用数组”,以便在这种情况下输出为5 编辑: 情节扭曲 代码的第一部分在某个类中。第二部分位于扩展第一部分的类

如果我创建一个变量数组:

public String a;
public String b;
public String c;

public String[] d = {a,b,c};
它将包含{null,null,null}

如果我这样做:

a = "5";
System.out.println(d[0]);
由于初始化
d
a
null
,因此输出将为null

有没有办法创建一个“引用数组”,以便在这种情况下输出为
5

编辑: 情节扭曲


代码的第一部分在某个类中。第二部分位于扩展第一部分的类中。

您可以使用自己的可变类包装
字符串:

class MyString {
    private String value;

    public MyString(String value) {
        this.value = value;
    }

    void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
       return value;
    }
}
现在:

public MyString a=新MyString(null);
public MyString b=新MyString(null);
public MyString c=新MyString(null);
公共MyString[]d={a,b,c};
...

a、 设置值(“5”);//如何从原语中获取
null
?而且,这些变量还没有初始化;代码不会编译。“它将包含{null,null,null};”;不,您的代码不会编译。输出不会为null,它将为零(0),因为原语整数初始化为零。使用对象包装器(
Integer
)。好吧,我的缺点是,我试图过多地简化它。我在使用字符串…@MarkoTopolnik为什么它们需要显式初始化?它们是字段,不是局部变量。因为
a.setValue(“5”)
会产生一个NPE,正如您所示,
d
仍然是
{null,null,null}
public MyString a = new MyString(null);
public MyString b = new MyString(null);
public MyString c = new MyString(null);

public MyString[] d = {a,b,c};

...

a.setValue("5");  // <--