过去的手册和 Stackoverflow 的答案都说 NNEL 是 Checker Framework 中的默认值。但是,最近的手册(3.7.1)不再提及该术语。
我在一个包裹上试过这个:
@DefaultQualifier(value = NonNull.class,
locations = {TypeUseLocation.RETURN, TypeUseLocation.PARAMETER, TypeUseLocation.FIELD, TypeUseLocation.UPPER_BOUND})
这行得通,但是,我不能声明:
public interface EntryProcessor<K, V, @Nullable R> { }
结果是:
java: [bound.type.incompatible] incompatible bounds in type parameter
type: R extends @Initialized @NonNull Object
upper bound: @Initialized @NonNull Object
lower bound: @Initialized @Nullable null
问题:
- 现在默认是什么?
- NNEL 概念是否包含类型参数?
- 如何
module-info.java
以尽可能最短的形式为包或更多逻辑为 Java 模块 ( ) 建立 NNEL? - 如果 NEEL 不包含类型参数,我怎样才能
EntryProcessor<K, V, @Nullable R>
有效地建立默认值EntryProcessor<@NonNull K, @NonNull V, @Nullable R>
?