java - 将实例变量传递给静态方法——并修改另一个实例变量?

标签 java hashmap

所以我有一个静态方法,它接受 HashMap 和一些其他参数并修改 HashMap:

public static void foo(HashMap映射,其他参数)

假设我有一个名为 Bar 的类,它有两个实例变量 HashMap

我将这些 HashMap 之一传递到 foo 中,打算对其进行修改(并且不传递另一个 HashMap)。我是否正确地说,由于仅此一个方法调用,HashMap 不可能被 foo 修改?

我问是因为这似乎发生在我身上......

最佳答案

如果你有

Map<String,String> map1=new HashMap<String,String>();

Map<String,String> map2=new HashMap<String,String>();

如果将map1传递给方法,则对map1的任何更改都不会反射(reflect)在map2中 因为map1和map2代表内存中的两个不同的对象。 如果您分配map1=map2,则两个映射都引用同一对象,因此修改一个对象将反射(reflect)在另一个对象引用中。 Java 通过引用传递对象(这不是 100% 正确,传递的是引用的值)。

对于存储在两个映射中的相同对象引用,您更改一个映射上对象的属性将反射(reflect)在另一个对象中的对象中,因为您正在更改同一对象的行为。它将反射(reflect)引用它的地方的更改。

关于java - 将实例变量传递给静态方法——并修改另一个实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873193/

相关文章:

Java不能做声明?

java - Postgresql JDBC 连接错误

java - 模拟具有固定工作量的 CPU 密集型任务

java - 如何强制我的模板解析器对/mail/* 模板使用 ClassLoaderTemplateResolver

arrays - 查找数组中出现奇数次的所有元素

java - 使用 Java Trie 无法识别单词结尾。递归某处失败

java数字和 "*"循环模式

java - 同义词 HashMap 的正确用法

java - map 中的 3 亿个项目

Java Map之map(嵌套map)排序