ImmutableMap里面有with()方法吗?

Is there a with() method inside ImmutableMap?

我正在看视频(https://www.youtube.com/watch?v=ZeO_J2OcHYM),发现我们可以使用 with() 方法初始化 ImmutableMap。见下文:

public static final ImmutableMap<String, Integer>
    ENGLISH_TO_INT = ImmutableMap
        .with("four", 4)
        .with("eight", 8)
        .with("fifteen", 15)
        .with("sixteen", 16)
        .with("twenty-three", 23)
        .with("forty-two", 42)
        .build();

但是,当我检查ImmutableMap 的API 时,我没有找到with() 方法。该方法是否已弃用?

我猜他们弃用了它,转而支持显式创建构建器,并使用 putMap 上镜像同名方法。我正在查看 release notes,但我还没有发现任何明确的内容。那个视频很旧,Guava 有更新的版本。

根据Javadoc, it has been there since version 2.0, when it was merged from google-collections。仔细看视频发现他们是用版本 0.9 来演示的。

查看 releases of google-collections,我没有看到任何列出的更改,也没有在任何 Javadoc 中看到它,所以我猜它没有进入任何官方发布。

如果您需要用一堆条目构造一个 ImmutableMap,您可以使用 builder() 调用。还有几种 of() 方法可以生成有限大小的地图(我想是 5 个?)。

public static final ImmutableMap<String, Integer>
    ENGLISH_TO_INT = ImmutableMap.<String, Integer>builder()
    .put("four", 4)
    .put("eight", 8)
    .put("fifteen", 15)
    .put("sixteen", 16)
    .put("twenty-three", 23)
    .put("forty-two", 42)
    .build();

我认为您正在寻找 of() method

public static final ImmutableMap<String, Integer> ENGLISH_TO_INT =
ImmutableMap.of("four", 4, "eight", 8);