gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:26 24 4
gpt4 key购买 nike

考虑以下示例代码。此代码使用 Eclipse 的 @NonNull@Nullable 注释来检查 null。不幸的是,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();

错误消息如下:

Null type mismatch (type annotations): required 'Function' but this expression has type 'Function<@NonNull Integer, @NonNull Integer>'

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

这是 Eclipse 外部注释的开始。

class one/util/streamex/AbstractStreamEx<TS>

nonNull
()TS;
()???;

我该为放什么???

最佳答案

对于 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();

关于java - AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40774367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com