【问题标题】:Eclipse External Null Annotation for AbstractStreamEx.nonNull()AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释
【发布时间】:2016-11-23 21:23:11
【问题描述】:

考虑以下示例代码。此代码使用 Eclipse 的 @NonNull@Nullable 注释来检查 nulls。不幸的是,Eclipse 在map(toNonNull) 行标记了一个错误。

import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import one.util.streamex.StreamEx;

Function<@NonNull Integer, @Nullable Integer> toNull;
Function<@NonNull Integer, @NonNull Integer> toNonNull;

toNull    = value -> value;
toNonNull = value -> value;

StreamEx.
   of(1, 2, 3, 4, 5, 6).
   map(toNull).
   nonNull().
   map(toNonNull).   // Error is here
   count();

这是错误信息:

空类型不匹配(类型注释):必需 '功能' 但是这个表达式有类型 '函数'

我想在StreamExnonNull()(或更准确地说是AbstractStreamExnonNull())上创建一个Eclipse 外部注释,以便Eclipse 知道流中的值不能为空。

这里是 Eclipse 外部注释的开始。

class one/util/streamex/AbstractStreamEx<TS>

nonNull
 ()TS;
 ()???;

??? 我要写什么?

【问题讨论】:

    标签: java eclipse streamex external-annotations


    【解决方案1】:

    对于 StreamEx 0.6.4 或更高版本,StreamEx 会覆盖 nonNull(),以便可以使用以下外部注释:

    nonNull
     ()Lone/util/streamex/StreamEx<TT;>;
     ()L1one/util/streamex/StreamEx<T1T;>;
    

    对于 StreamEx 0.6.3 或更早版本,一个丑陋的解决方案是更改 Java 代码。这可以解决编译器错误。

    StreamEx.
       of(1, 2, 3, 4, 5, 6).
       map(toNull).
       nonNull().
       map(item -> item != null ? toNonNull.apply(item) : null).
       count();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 2015-11-05
      相关资源
      最近更新 更多