用Java更新ArrayList中的元素?

时间:2013-08-26 15:41:10

标签: java object arraylist

我有以下课程:

public class Profile{
    String name, age, location;
}

假设我有以下代码:

ArrayList<Profile> profiles = somePopulatedArrayList;
Profile profile = profiles.get(1);
profile.name = "New name here";

我的问题是,当我有上述内容时,ArrayList中对象的.name会更新,或者我在这里创建一个全新的对象,只更改该对象的.name存储在ArrayList中的Profile对象仍然具有旧名称?

我正在尝试编辑ArrayList中对象的属性,我想知道上述方法是否正确?

3 个答案:

答案 0 :(得分:4)

没有创建新对象。您已更新列表中的对象,即列表中的对象将在此处使用“新名称”作为名称。

事实上,您可以使用调试器进行测试和查看。

答案 1 :(得分:2)

在Java中,作为对象类型的所有变量都包含对对象的引用。当您在集合上调用get时,它会返回对其内部对象的引用,因此如果您继续修改该对象,则其他任何查看同一对象的人都会看到这些更改。

答案 2 :(得分:2)

没有创建新对象,您正在修改现有值。

  

实际上这不是一个好习惯,你应该允许访问你的   直接类变量,使它们成为私有和提供   同样的setter / getter方法。

public class Profile {
    private String name, age, location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

}