当前位置:  开发笔记 > 编程语言 > 正文

使用不同的泛型类型参数映射值

如何解决《使用不同的泛型类型参数映射值》经验,为你挑选了1个好方法。

我想尝试做以下事情:

  private static final ImmutableMap> lists = ImmutableMap.of(
      "A", new ArrayList(),
      "B", new ArrayList());

本质上,我试图捕获的主要区别是不同的值具有不同的类型参数.但是这会给出错误:

Type mismatch: cannot convert from 
ImmutableMap>>
to ImmutableMap>

是否有更好的方法来解决这个问题?



1> rgettman..:

您的代码在Java 1.8中编译得很好,但它无法在Java 1.7中编译.Java 1.8中包含改进的目标类型推断.

基本上这意味着在Java 1.7中,编译器将推断可能的泛型类型参数的最具体类型,即使这将导致编译器错误与目标类型(在本例中ImmutableMap>).

在Java 1.8中,考虑了目标类型,使得映射值的类型参数List取而代之ArrayList>.

您可以升级到Java 1.8,也可以为of方法调用提供显式类型参数.

private static final ImmutableMap> lists =
     //           vvvvvvvvvvvvvvvvv
     ImmutableMap.>of(
          "A", new ArrayList(),
          "B", new ArrayList());

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有