問題タブ [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.
eclipse - Java 8 Optional.ifPresent は私のコードが間違っていますか、それとも日食ですか?
私はJava 8が初めてで、Null型の注釈とオプションを試しています。
以下の例では、クラスではなく String を使用しており、何かを呼び出すためだけに toUpperCase を呼び出しています。私の場合、実際にはパラメーターを渡す関数を呼び出しています (したがって、:: 演算子やマップを使用できるとは思わないでください)。 )。
Eclipse では、Java - Compiler - Errors/Warnings - Null Analysis Errors がオンになっています。
以下の私のテストコード:
Eclipse 型の null アノテーションと Optional.ifPresent を使用するとうまくいかないようです。
このようなものを機能させるために時間を無駄にしていますか? ゲッターを一時変数に割り当ててからnullかどうかをチェックし、そうでない場合は関数を呼び出すことに戻る必要がありますか?
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 を使用しています。
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
ますか?
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 でも動作しますか?
java - AbstractStreamEx.nonNull() の Eclipse 外部 Null アノテーション
次のコード例を検討してください。このコードは、Eclipse@NonNull
と@Nullable
アノテーションを使用してnull
s をチェックします。残念ながら、Eclipse は次の行にエラーのフラグを立てますmap(toNonNull)
。
エラーメッセージは次のとおりです。
Null 型の不一致 (型注釈): 'Function' が必要ですが、この式の型は 'Function<@NonNull Integer, @NonNull Integer>' です
StreamExnonNull()
(またはより正確にはAbstractStreamEx )に Eclipse 外部アノテーションを作成して、ストリーム内のnonNull()
値を null にすることはできないことを Eclipse が認識できるようにしたいと考えています。
これが Eclipse 外部注釈の始まりです。
何を入れ???
ますか?
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 でも発生します。