类型参数中的检查器框架不兼容类型

checker-framework incompatible types in type argument

我有一些这样的代码,我将映射存储到 java threadlocal,

import java.util.*;

class Foo {
  private final ThreadLocal<Map<String, String>> barMap = ThreadLocal.withInitial(HashMap::new);
}

从 checkerframework 启用无效性检查时,我得到

Error: [type.argument.type.incompatible] incompatible types in type argument.
   found   : @Initialized @NonNull Map<@Initialized @NonNull String, @Initialized @NonNull String>
   required: [extends @Initialized @Nullable Object super null]

我不知道如何解决这个问题。

这是 Checker Framework 中的 known bug。您应该取消警告。

Checker Framework 目前使用 Java 7 类型推理算法。 Java 8 对类型推断进行了重大更改,这需要在 Checker Framework 中重新实现。 (Checker 框架本身本质上是一个编译器。)重新实现已部分完成,但尚未完成。