在ImmutableMap中有一个with()方法吗?

时间:2015-05-19 04:50:00

标签: java guava immutable-collections

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

2 个答案:

答案 0 :(得分:3)

我猜他们不赞成使用显式创建构建器,并使用put镜像Map上的同名方法。我正在查看release notes,但我还没有发现任何明确的内容。该视频已经过时了,而Guava的版本更新。

根据Javadoc,自version 2.0合并0.9以来,它一直在那里。仔细观察视频会发现他们正在使用版本ImmutableMap进行演示。

查看google-collections,我没有看到任何列出的更改,我也没有在任何Javadoc中看到它,所以我猜它没有进入任何正式版本。

如果您需要构建包含大量条目的builder(),则可以使用of()调用。还有几种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(); 方法可以生成有限大小的地图(我认为5?)。

  Try(
    args(j).toInt
  ) {
    case Success(i) => //do something with int i
    case Failure(ex) => //error message
  }

答案 1 :(得分:0)

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

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