2

我正在观看视频(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() 方法。该方法已被弃用吗?

4

2 回答 2

3

我猜他们弃用了它,转而支持显式创建一个构建器,并使用它put来镜像Map. 我正在查看发行说明,但我还没有发现任何明确的内容。那个视频很旧,而 Guava 有一个更新的版本。

根据Javadocversion 2.0 ,它从google-collections合并后就一直存在。仔细查看视频会发现他们正在使用 version 进行演示0.9

查看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();
于 2015-05-19T05:12:04.227 回答
0

我认为您正在寻找of() 方法

public static final ImmutableMap<String, Integer> ENGLISH_TO_INT =
ImmutableMap.of("four", 4, "eight", 8);
于 2015-05-19T05:23:29.320 回答