次のコード例を検討してください。このコードは、Eclipse@NonNull
と@Nullable
アノテーションを使用してnull
s をチェックします。残念ながら、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 型の不一致 (型注釈): 'Function' が必要ですが、この式の型は 'Function<@NonNull Integer, @NonNull Integer>' です
StreamExnonNull()
(またはより正確にはAbstractStreamEx )に Eclipse 外部アノテーションを作成して、ストリーム内のnonNull()
値を null にすることはできないことを Eclipse が認識できるようにしたいと考えています。
これが Eclipse 外部注釈の始まりです。
class one/util/streamex/AbstractStreamEx<TS>
nonNull
()TS;
()???;
何を入れ???
ますか?