首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Arraylist更改会影响其他变量

Java Arraylist更改会影响其他变量
EN

Stack Overflow用户
提问于 2018-08-13 02:07:29
回答 1查看 508关注 0票数 3

我使用的是java fx,在下面的代码中没有什么花哨的东西,并捕获文本字段的focusedProperty来覆盖下面新输入的值。下面的代码更改了在文本字段中输入的人名,当用户单击cancel按钮时,它会将旧姓名放回到文本字段中。但是,由于某些原因,神奇的事情发生了,每当我设置人名时,它都会覆盖cancelPerson变量中的字段。不知道为什么会发生这种情况?在设置新值之前,我从persons中获取cancelPerson。那么,人员列表中的更改是如何影响自变量的。你知道为什么会发生这种情况吗?谢谢。

代码语言:javascript
复制
 private ObservableList<Person> persons;
 private Person person;
 private Person cancelPerson;

    personName.focusedProperty().addListener((observable, oldValue, newValue) -> {
                if (!newValue) {
                    final int index = personIdCombo.getSelectionModel().getSelectedIndex();
                    cancelPerson = persons.get(index);
                    final Person person = persons.get(index);
                    person.setName(personName.getText());
                    persons.set(index, person);
                }
            }
    );


class Person{
   private final StringProperty name;
   public Person() {

        this.name = new SimpleStringProperty("testName");           

   }

   public SystemParams(Person person) {

      this.name = person.name;
   }
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-13 02:14:57

在Java语言中,类实例就像Person的实例一样是引用类型。这意味着当您执行赋值时,您只是复制对实例的引用。

在您的代码中,personcancelPerson都引用同一个Person实例,您对它们执行的任何操作都会影响该实例。

如果您不想修改Person实例,可以先复制该实例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51811522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档