ImmutableMap和Map是不兼容的?

时间:2017-02-07 16:24:59

标签: java dropwizard

我正在关注this tutorial,以便尝试为基于dropwizard的API添加身份验证。

我遇到的问题是,教程到了我们需要编写authenticator类的程度,并使用以下代码:

private static final Map<String, Set<String>> VALID_USERS = ImmutableMap.of(
    "guest", ImmutableSet.of(),
    "user", ImmutableSet.of("USER"),
    "admin", ImmutableSet.of("ADMIN", "USER")
);

这是我可以收集的一种设置某些角色的方法,以便以后可以在限制对某些端点的访问时使用它们 - 但是我在这段代码上收到错误:

Incompatible Types

Required : Map <path to Map class here>
Found : ImmutableMap <path to ImmutableMap class here>

现在,我意识到它们是不同的类型,之前我使用过地图,但ImmutableMaps对我来说是新的领域,所以我有点依赖于教程工作中的这段代码。

如果有人能让我知道如何解决它,那将是非常棒的,如果你能解释为什么它也被破坏了,那就更好了!谢谢!

1 个答案:

答案 0 :(得分:1)

在这种情况下,

ImmutableMap.of将推断<String, ImmutableSet<String>>的泛型类型参数。您可能必须明确指定类型args:

private static final Map<String, Set<String>> VALID_USERS = ImmutableMap.<String, Set<String>>of(
    "guest", ImmutableSet.of(),
    "user", ImmutableSet.of("USER"),
    "admin", ImmutableSet.of("ADMIN", "USER")
);