1

我有以下课程:

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

假设我有以下代码:

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

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

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

4

3 回答 3

4

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

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

于 2013-08-26T15:42:31.667 回答
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;
    }

}
于 2013-08-26T15:45:54.973 回答
2

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

于 2013-08-26T15:43:22.873 回答