首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AbstractStreamEx.nonNull()的Eclipse外部Null注释

AbstractStreamEx.nonNull()的Eclipse外部Null注释
EN

Stack Overflow用户
提问于 2016-11-23 21:23:11
回答 1查看 144关注 0票数 1

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

代码语言:javascript
复制
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();

以下是错误消息:

空类型不匹配(类型注释):必需的“函数”,但该表达式的类型为“Function<@NonNull整数,@NonNull Integer>”

我想在StreamExnonNull() (或者更准确地说,是AbstractStreamExnonNull())上创建一个,这样Eclipse就会知道流中的值不能为null。

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

代码语言:javascript
复制
class one/util/streamex/AbstractStreamEx<TS>

nonNull
 ()TS;
 ()???;

我给???放了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 21:31:54

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

代码语言:javascript
复制
nonNull
 ()Lone/util/streamex/StreamEx<TT;>;
 ()L1one/util/streamex/StreamEx<T1T;>;

对于Java0.6.3或更高版本,一个难看的解决方案是更改StreamEx代码。这可以避免编译器错误。

代码语言:javascript
复制
StreamEx.
   of(1, 2, 3, 4, 5, 6).
   map(toNull).
   nonNull().
   map(item -> item != null ? toNonNull.apply(item) : null).
   count();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40774367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档