Java,为什么这个领域没有改变?

时间:2014-12-02 16:14:01

标签: java reference field

我遇到了Java问题。为什么以下代码返回null

public class TestClass {
    public String top,top1,top2,top3,top4;

    public TestClass(){
        changeTop(top);
        changeTop(top1);
    }

    public void printTop(){
        System.out.println(top);
    }

    public void changeTop(String reference){
        reference="lolly";
    }

}

当我运行以下内容时:

TestClass x =   new TestClass();
x.printTop();

它还会返回null。我不明白,因为我以为我正在传递对ChangeTop的引用。 我怎样才能解决这个问题?我想将参数的名称赋予方法以进行更改。

1 个答案:

答案 0 :(得分:0)

试试这个:

public void changeTop(String reference){
    this.top = reference;
}

然后运行:

TestClass x =   new TestClass();
x.changeTop("lolly");
x.printTop();

修改

如果有很多变数,请尝试将TestClass更改为:

public class TestClass {
    public List<String> tops;

    public TestClass(List<String> newTops){
        changeTop(newTops);
    }

    public void printTop(){
        System.out.println(tops);
    }

    public void changeTop(List<String> tops){
        this.tops = tops;
    }

}

尝试运行:

public static void main(String[] args) {
    List<String> tops = Arrays.asList("lolly", "colly", "solly", "molly");
    TestClass x = new TestClass(tops);
    x.printTop();
}

输出:

[lolly, colly, solly, molly]