Java ode>和游戏可以使用相同的源代码。

Java ode>和游戏可以使用相同的源代码。,java,list,Java,List,Java是通过引用传递的,因此如果列表和玩家对象中有场景对象,它们都将是指向内存中实际场景对象的指针 编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端转到scenario=new scenario(),它将是同一个对象。Java是通过引用传递的,因此如果列表和播放器对象中有一个scenario对象,它们都将是内存中实际scenario对象的指针 编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端转到scenario=new scenario(),它将是同一个

Java是通过引用传递的,因此如果列表和玩家对象中有场景对象,它们都将是指向内存中实际场景对象的指针


编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端转到
scenario=new scenario()
,它将是同一个对象。

Java是通过引用传递的,因此如果列表和播放器对象中有一个scenario对象,它们都将是内存中实际scenario对象的指针


编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端转到
scenario=new scenario()
,它将是同一个对象。

Java是通过引用传递的,因此如果列表和播放器对象中有一个scenario对象,它们都将是内存中实际scenario对象的指针


编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端转到
scenario=new scenario()
,它将是同一个对象。

Java是通过引用传递的,因此如果列表和播放器对象中有一个scenario对象,它们都将是内存中实际scenario对象的指针



编辑:很显然,这是一种参考,但从技术上讲不是真的。只要您不在任何一端执行
scenario=new scenario()
,它将是同一个对象。

在您的情况下,如果玩家对象有一个scenario对象,则不会复制(或克隆)整个场景,只会复制scenario的引用。您可以通过玩家参考或通过列表修改场景;因为它是一个对象,有许多引用。

在您的例子中,如果玩家对象有一个场景对象,则不会复制(或克隆)整个场景,只会复制场景的引用。您可以通过玩家参考或通过列表修改场景;因为它是一个对象,有许多引用。

在您的例子中,如果玩家对象有一个场景对象,则不会复制(或克隆)整个场景,只会复制场景的引用。您可以通过玩家参考或通过列表修改场景;因为它是一个对象,有许多引用。

在您的例子中,如果玩家对象有一个场景对象,则不会复制(或克隆)整个场景,只会复制场景的引用。您可以通过玩家参考或通过列表修改场景;因为它是一个对象,有很多参考资料。

我目前正在计划一个更大的(对我来说)项目,我想知道这是否可能,或者我是否应该尝试以不同的方式实施它。另外,我会尝试从列表0中获取someObject,而不是创建一个对象然后共享它,这会有什么不同吗?我目前正在计划一个更大的(对我来说)项目,我想知道这是否可行,或者我是否应该尝试以不同的方式实现它。另外,我会尝试从列表0中获取someObject,而不是创建一个对象然后共享它,这会有什么不同吗?我目前正在计划一个更大的(对我来说)项目,我想知道这是否可行,或者我是否应该尝试以不同的方式实现它。另外,我会尝试从列表0中获取someObject,而不是创建一个对象然后共享它,这会有什么不同吗?我目前正在计划一个更大的(对我来说)项目,我想知道这是否可行,或者我是否应该尝试以不同的方式实现它。另外,我会尝试从list0中获取someObject,而不是创建一个对象然后共享它,这会有所不同吗?似乎不同意它的传递值,但该值是一个引用(因此它是引用的传递值)。但在这种情况下,效果就是你所描述的,这是错误的。查看我在回答中的解释。@RomanVottner如果您更改作为参数传递的对象的状态(即修改其成员),您将在调用例程中看到效果。但是,如果将引用绑定到另一个对象,则它在调用方法中没有任何效果。Java和支持按引用传递的语言之间的一个著名区别是,在Java中不可能实现泛型swap()-方法(你应该通过google找到很多这方面的信息)。我一直讨厌“Java是按值传递的”这句话,然后在两个不同的范围内看不到对对象的修改。除原语外,传递的“值”是对对象的引用,即传递引用。所以我认为它是用星号作为参考的。似乎不同意它的传递值,但该值是一个引用(因此它是引用的传递值)。但在这种情况下,效果就是你所描述的,这是错误的。查看我在回答中的解释。@RomanVottner如果您更改作为参数传递的对象的状态(即修改其成员),您将在调用例程中看到效果。但是,如果将引用绑定到另一个对象,则它在调用方法中没有任何效果。Java和支持按引用传递的语言之间的一个著名区别是,在Java中不可能实现泛型swap()-方法(你应该通过google找到很多这方面的信息)。我一直讨厌“Java是按值传递的”这句话,然后在两个不同的范围内看不到对对象的修改。除原语外,传递的“值”是对对象的引用,即传递引用。所以我认为它是用星号作为参考的。似乎不同意它的传递值,但该值是一个引用(因此它是引用的传递值)。但在这种情况下,效果就是你所描述的,这是错误的。请查看我在回答中的解释。@RomanVottner如果您更改o的状态(即修改其成员)
Game
Scenarios : list

Player
Scenarios : list -> each scenario here is a reference to scenario in Game
SomeObject o = new SomeObject();

list0.add(o);
list1.add(o);
list2.add(o);

o.setSomeValue(true);

// all lists will "see" the changes

list0.get(0).equals(o); // assuming list0 only contains o -> this is true
public class Scenario implements  ScenarioItf{/**/}
public class ScenariosFactory {

    private static List<Scenarios> mScenarios = null;


    public static void create(List<Scenarios> scenarios) {
        mScenarios = scenarios;
    }


    public static List<Scenarios> getFactory(){
        if ( mScenarios == null )
            throw new NullPointerException( "...null..." );
        return mScenarios;
    }
}