我有以下课程:
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中对象的属性,我想知道上述方法是否正确?
答案 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;
}
}