【发布时间】:2013-06-07 16:48:12
【问题描述】:
我有一个问题,我猜对象的范围以及对象所持有的值是否会在某些条件下发生变化。 例如,我创建了一个类,我需要在其中构造多个对象的实例,但是这些实例需要在整个程序中使用和修改,并且在创建第一个实例后不应再创建新实例(我不不知道这将遵循什么设计模式(如果有的话)。我设计对象的方式类似于以下内容:
//basic constructor class
public class MyObject {
private String var1;
private int var2;
private boolean vr3
public MyObject(String param1, int param2, boolean param3) {
var1 = param1;
var2 = param2;
var3 = param3;
}
//getter and setter methods
}
//in main class
Map<String, MyObject> myObjects = new HashMap<String, MyObject>();
在我的程序开始时,我搜索了一些文件以构造新的 MyObject 对象,然后将它们放入 HashMap 中,这是唯一应该创建新的 MyObject 的时间。因此,在整个程序中,我通过获取与 String 键匹配的值来获取 HashMap 中的对象,一旦获得该对象,我就可以使用如下不同的 setter 方法对其进行处理:
MyObject object1 = MyObjects.get("anObject");
object1.setVar1("This is the objects new var1 string value");
上面的代码应该改变对象中的字符串值,该对象位于键“anObject”下的 HashMap 中。但我想知道这是否也适用于列表之类的东西?比如说我有一个列表作为对象中的值之一,如果我从 HashMap 中获取该对象,并调用类似:
object1.getList().add("new value in the object1 list");
这会将值添加到 hashMap 中的对象吗?我想知道这是因为自从我打电话以来: MyObject object1 = MyObjects.get("anObject"); 似乎它可能正在创建该类的新实例或只是将其复制过来,并且对该 object1 对象的任何更改都不会对 HashMap 中的对象进行。
我是否正确,对从 HashMap 获得的对象的任何值所做的更改将被放回 HashMap 中的对象? 抱歉这个愚蠢的问题。
【问题讨论】:
-
是的,因为它们是同一个对象。你只是在传递引用。