gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:17:56 25 4
gpt4 key购买 nike

所以我有一个静态方法,它接受 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com