問題タブ [external-annotations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1061 参照

eclipse - Java 8 Optional.ifPresent は私のコードが間違っていますか、それとも日食ですか?

私はJava 8が初めてで、Null型の注釈とオプションを試しています。

以下の例では、クラスではなく String を使用しており、何かを呼び出すためだけに toUpperCase を呼び出しています。私の場合、実際にはパラメーターを渡す関数を呼び出しています (したがって、:: 演算子やマップを使用できるとは思わないでください)。 )。

Eclipse では、Java - Compiler - Errors/Warnings - Null Analysis Errors がオンになっています。

以下の私のテストコード:

Eclipse 型の null アノテーションと Optional.ifPresent を使用するとうまくいかないようです。

このようなものを機能させるために時間を無駄にしていますか? ゲッターを一時変数に割り当ててからnullかどうかをチェックし、そうでない場合は関数を呼び出すことに戻る必要がありますか?

0 投票する
1 に答える
593 参照

java - JRE メソッドのパラメーターに Eclipse 外部 null アノテーションを定義する方法

Eclipse の外部 null 注釈<T> T[] toArray(T[] a)を使用して JRE メソッドに注釈を付けようとしています。期待される効果は次のようになります。java.util.Set

Eclipse の Annotate コマンドを使用すると、メソッドの戻り値の型に適切に注釈を付けることができます ( を選択しT[]てカーソルを の前に置いた後[)。ただし、パラメーターで同じことをしようとすると失敗します。Cmd-1 を押すとビープ音が鳴り、コンテキスト メニューからコマンドを呼び出すときに [注釈] を選択すると、ビープ音が鳴ります。

最終的に、対応するSet.eeaファイルを手動で編集して、必要な注釈を定義し、適切なeea ファイル レイアウトを処理することになりました。つまり、次の annotatedSignature を変更しました。

これは正常に機能し、注釈はコンパイラによって正しく処理されます。

戻り値の型には注釈を付けることができますが、パラメーターの型には注釈を付けることができないため、何が間違っているのか疑問に思っています。それとも、これは現在の Eclipse バージョンの制限ですか?

Eclipse Mars リリース (4.5.0、ビルド ID: 20150621-1200) と jdk1.8.0_60 を使用しています。

0 投票する
1 に答える
644 参照

java - java.lang.Object#getClass() の Eclipse 外部ヌル注釈

私は、Eclipse Mars で利用可能な外部 null 注釈機能を使用しています。の外部注釈を追加しようとしてjava.lang.Object#getClass()いますが、署名を正しく取得できないようです。次のバリエーションを試しました。

getClass()ただし、呼び出しの結果をのインスタンスを受け入れるメソッドに渡すと、引き続き警告が表示されます。この場合Class<?>、そのパラメーターには の注釈が付けられ@NonNullます。

以下は、問題を再現する最小限の Eclipse Mars プロジェクトの関連ファイルです (この例では、上記の最初の null 注釈のバリエーションを使用していますが、2 番目のバリエーションを使用した場合にも同じ警告が表示されます)。

Windows 64 ビット
Oracle JDK 1.8.0_60用の Eclipse Mars リリース (4.5.0; 20150621-1200)

ソース/バー/Foo.java

src/bar/package-info.java

注釈/java/lang/Object.eea

.settings/org.eclipse.jdt.core.prefs (部分)

.classpath

上記のプロジェクトでは、Foo.javaの 10 行目(printTypeが呼び出される場所)で次の警告が表示されます。

これは、外部 null 注釈が存在しない場合に表示される警告と同じです。

java.lang.Object#getClass()この警告を削除するための外部 null 注釈を正しく作成するにはどうすればよいですか? それとも、の宣言に私の問題がありprintTypeますか?

0 投票する
1 に答える
307 参照

java - Eclipse 外部アノテーションを使用して汎用コレクションでメソッドに適切にアノテーションを付ける方法

Eclipse の外部アノテーションを使用してメソッドにアノテーションを付けようとしjava.util.List.toArrayていますが、戻り値の型にアノテーションを付ける方法がわかりません。リストに次の署名がある場合:

List.toArray は以下を返す必要があります。

ただし、リストに null 許容要素を含めることができる場合:

List.toArray も、null 許容要素を含む配列を返す必要があります。

私は Eclipse Neon を使用していますが、これは可能ですか? Eclipse Neon New and Noteworthy ページはList.get() の例を提供しているようで、値の nullity を省略する必要があることを示唆していますが、それは配列では機能しないようです? 私が使用している外部注釈定義は次のとおりです。

しかし、これはうまくいきません:

collect.toArrayエラーとしてマークされています:

Null 型の安全性 (型注釈): 型 'String[]' の式は、'@NonNull String []' に準拠するために未チェックの変換が必要です

どうすればこれを修正できますか? これは Eclipse Neon でも動作しますか?

0 投票する
1 に答える
117 参照

java - AbstractStreamEx.nonNull() の Eclipse 外部 Null アノテーション

次のコード例を検討してください。このコードは、Eclipse@NonNull@Nullableアノテーションを使用してnulls をチェックします。残念ながら、Eclipse は次の行にエラーのフラグを立てますmap(toNonNull)

エラーメッセージは次のとおりです。

Null 型の不一致 (型注釈): 'Function' が必要ですが、この式の型は 'Function<@NonNull Integer, @NonNull Integer>' です

StreamExnonNull() (またはより正確にはAbstractStreamEx )に Eclipse 外部アノテーションを作成して、ストリーム内のnonNull()値を null にすることはできないことを Eclipse が認識できるようにしたいと考えています。

これが Eclipse 外部注釈の始まりです。

何を入れ???ますか?

0 投票する
1 に答える
103 参照

java - Eclipse null 分析には、ジェネリック パラメーターに @NonNull があります

このコードに問題があります...

注: パッケージには@NonNullByDefault、package-info.java で注釈が付けられます。

上記のコードの最後の行にToStringSerializer.instance、次のエラーがあります...

Null 型の安全性 (型注釈): 型 'ToStringSerializer' の式は、'StdSerializer<@NonNull Object>' に準拠するために未チェックの変換が必要です。対応するスーパータイプは 'StdSerializer' です

ファイルにはToStringSerializer.eea...

Eclipse 2021-03 (4.19.0 ビルド 20210312-0638) がToStringSerializer.instanceである必要があると言うのはなぜ...<@NonNull...>ですか? Eclipse はどのようにしてそれが である必要があると判断しObjectます@NonNullか? これを修正するにはどうすればよいですか?

この問題は Eclipse 2020-12 で発見され、Eclipse 2021-03 でも発生します。