gpt4 book ai didi

java - 将Map分配给ImmutableMap后,如何停止或限制重新分配另一个 map

转载 作者:行者123 更新时间:2023-11-30 07:39:54 24 4
gpt4 key购买 nike

我像这样声明了一个 ImmutableMap

public static ImmutableMap<String, String> mapImmutable;

为这个变量分配了一个映射

mapImmutable= ImmutableMap.copyOf(map2);

现在,如果我将其他 map 分配给这个“mapImmutable”变量。它不会抛出任何异常并会更新值。

mapImmutable=ImmutableMap.copyOf(map3);

公共(public)类 UnmodifiedMap {

public static ImmutableMap<String, String> mapImmutable;

public static void main(String[] args) {
Map<String,String> map2=new HashMap<String,String>();

map2.put("name", "mark");
mapImmutable= ImmutableMap.copyOf(map2);
System.out.println(mapImmutable);

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

map3.put("Country", "USA");
map3.put("name", "Joy");

mapImmutable=ImmutableMap.copyOf(map3);\\It should throw an exception while reassign.
System.out.println(mapImmutable);}}

控制台结果-:{名称=标记}{国家=美国}

它应该在重新分配时抛出异常。

最佳答案

您应该区分Map 的不变性和mapImmutable 字段的不变性。

顾名思义,ImmutableMap 是不可变的,但是在您的代码中,指向 map 的字段只是一个常规字段。因此,它可以重新分配以指向不同的 map 。如果您希望该字段不可变,只需将其标记为 final

关于java - 将Map分配给ImmutableMap后,如何停止或限制重新分配另一个 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788058/

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