java - 为什么创建 Simple ImmutableMap 会导致未经检查的强制转换警告?

标签 java generics unchecked-cast

在下面非常简单的代码中:

public static void test(Map<Externalizable, Externalizable> t){
    for(Map.Entry<Externalizable, Externalizable> e : t.entrySet()){
      //The next line causes unchecked cast warning
      Object o = new AbstractMap.SimpleImmutableEntry(e.getKey(), e.getValue());
    }
  }

DEMO

为什么? AbstractMap.SimpleImmutableMap 是一个泛型类。怎么了?

最佳答案

因为您正在使用 raw type 。相反,请使用 diamond operator

Object o = new AbstractMap.SimpleImmutableEntry<>(e.getKey(), e.getValue());

关于java - 为什么创建 Simple ImmutableMap 会导致未经检查的强制转换警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387254/

相关文章:

java - 在 joda time 中使用 parseDateTime 时休息 1 天

java - 未经检查从 X 转换为扩展 X 的泛型类型

java - 关于 Copyable getObjectCopy(),如何证明为什么未经检查的类型转换没问题

java - 为原始类型抛出不一致的 ClassCastException

java - 如何将 WatchService 转换为 Runnable?

java - 如果您将一个可运行对象提交给具有多个线程的执行程序服务,多个线程是否会执行该可运行对象?

java - 有没有办法找到进程正在使用的端口,给定它的进程 id,使用 java?

swift - 协议(protocol)不符合自身?

java - 为什么 Java 不允许 Throwable 的泛型子类?

java - 带有泛型和可变参数的模棱两可的重载 java 方法