如果我们检索地图值,然后我们做了一些变化, 所以我们再次需要把该对象返回地图地图GET值查询
为前
Human human = (Human) domainObjects
.get(Constants.Human;
human.setName("Vish");
domainObjects.put(Constants.Human, human);
或者像我们传递即使没有使用地图放置功能,对象的参考也会出现在域对象中的更改
如果我们检索地图值,然后我们做了一些变化, 所以我们再次需要把该对象返回地图地图GET值查询
为前
Human human = (Human) domainObjects
.get(Constants.Human;
human.setName("Vish");
domainObjects.put(Constants.Human, human);
或者像我们传递即使没有使用地图放置功能,对象的参考也会出现在域对象中的更改
地图返回到下面的对象的引用的副本。不是该对象的副本。当你调用setName时,你正在改变对象。
这将您应该使用枚举你常量或普通类出现。
Map<EnumType, Object> map = new EnumMap<EnumType, Object>(EnumType.class);
Human human = (Human) map.get(EnumType.Human);
或
Map<Class, Object> map = new LinkedHashMap<Class, Object>();
Human human = (Human) map.get(Human.class); // no need for a constant.
无需重新放置。更改将在单个对象上进行。
Java的工作参照对象,而不是与你的原语。所以你会一直在使用相同的“内存块”。在所有指向该对象的变量中都可以看到更改。
实施例:
Map<Integer, Human> map = new HashMap<Integer, Human>();
map.put(1, new Human("Toto"));
Human human = map.get(1);
human.setName("Tutu");
human = new Human("Tata");
System.out.println(map.get(1).getName()); // "Tutu"
System.out.println(human.getName()); // "Tata"
NO。你需要理解两个概念,变量和对象,并且知道java通过引用传递对象。
'你'在你写下并声明的'human'.java源文件是一个变量, 在运行时,'human'变量是对某个对象的引用。
因此任何方法返回值实际上是指一个对象的变量。 (基本上是大多数时间,在简单情况下...)
当你调用variable.method()时,它实际上告诉jvm调用引用的对象的方法。
在你的情况下,这是更新的对象(即由“人”的变量引用)“名称”,值为“愿望”字段
我有一个很难看到这个问题。你能改述一下吗? – AndroidHustle