如何确保对象的深层嵌套成员将保留对其进行的更改?

时间:2014-07-02 22:36:11

标签: java javafx javafx-8

我有一堆Java bean对象。

目标有: ObservableList<Objective>.

目标有: ObservableList<Strategy>.

策略有: ObservableList<Tactic>.

TACTIC有: ObservableList<Task>.

我的程序允许用户进入多个级别,添加,编辑或删除上述任何上述项目。如果用户选择某个目标,他们可以定义并添加目标。等等一直到战术。

问题是,如何确保上述级别中的最低级别更改仍然存在?假设您想要将目标添加到目标1.我是否会传入目标1的ObservableList?在“定义目标1的新目标”屏幕中,我可以向此ObservableList添加新的Goal()。但是,Java总是按值(而不是引用)传递,不是吗?当我关闭并重新打开目标记录屏幕时,目标的目标列表将被清除并且不再存在。

如何确保更改会说明?

1 个答案:

答案 0 :(得分:0)

Java通过引用传递基本类型(int,char)和对象。因此,您可以修改传递给方法的对象,并且更改将保持不变。

示例:

public class ByReference {

    static class Foo {

        public int i = 0;
    }

    static void changeFoo(Foo fooParam) {
        fooParam.i = 1;
    }

    public static void main(String args[]) {
        Foo foo = new Foo();
        System.out.println(foo.i); // prints 0
        changeFoo(foo); // pass foo to method by reference
        System.out.println(foo.i); // prints 1 -- change persist
    }
}

有一篇很好的文章解释说:http://www.javaworld.com/article/2077424/learn-java/does-java-pass-by-reference-or-pass-by-value.html