問題タブ [jsr305]
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.
java - @Nullable とジェネリック (Eclipse)
ユーティリティ メソッドを Java 8 に導入したいと考えています。名前付きのメソッドmax
は次のように定義されています。
Eclipse にエラーが表示されるようになりました。
Null 型の不一致 (型注釈):
null
は自由型変数と互換性がありませんE
。
@Nullable
の定義に追加するとエラーが取り除かれると思いresult
ましたが、明らかにそうではありません。メソッド全体に追加で注釈を付けても@Nullable
、エラーは解決しません。
ところで、私は FindBugs の jsr-305.jar を使用しており、Eclipse をjavax.annotation.Nonnull
と同様に尊重するように構成しましたjavax.annotation.Nullable
。編集:LubuntuでEclipse Luna 4.4.2とOracle JDK 8ビルド1.8.0_25-b17を実行しています。
さて、私の質問です:エラーはどこから来たのですか?注釈とジェネリック型定義の両方の利点を維持しながら、どうすればそれを取り除くことができますか?
編集:デフォルトのEclipseアノテーションが使用されているサンプルプロジェクトを追加したところ、多少機能しているように見えます(result == null
結果がその時点でのみnullになる可能性があると誤って推測するため、で警告を生成することを除けば)。したがって、これはデフォルト以外の注釈クラスに関する Eclipse の問題のようです。Eclipse の注釈の独自のコピーを使用して再テストしたNullable
ところ、上記と同じエラーが発生しました。
eclipse - Eclipse カスタム @NonNull アノテーションが無視される
Eclipse の「null 分析」機能を使用したいのですが、org.eclipse.jdt.annotation.NonNull アノテーションよりも javax.annotation.Nonnull アノテーションを使用したいと考えています。設定したカスタム アノテーションを Eclipse に認識させることができないようです。
Eclipse Luna 4.4.2 を使用しています。
次のクラスのみを含む新しいテスト プロジェクトを作成しました。
私のコンパイラ設定は、javax アノテーションを使用するように構成されています。
私のプロジェクトには、注釈を提供するための checker-1.8.10 JAR が含まれています。
これらの設定では、Eclipse は 0 エラーを報告します。
「null 仕様にデフォルトのアノテーションを使用する」をチェックして、テスト クラスを Eclipse のアノテーションを使用するように変更すると、次のようになります。
私が間違っていることを知っている人はいますか、これはおそらくEclipseのバグですか? 問題が発生した場合に備えて、チェッカーの代わりにGoogleのjsr305 JARも試しましたが、それは役に立ちませんでした。
java-8 - 分割パッケージへの Javadoc リンク
javadoc ツールを使用する場合 (Javadoc を直接使用するのではなく、Maven Javadoc プラグインを使用して行います)、-link
外部ソースにリンクするオプションがあります。現在の問題は、私のプロジェクトが JSR-305 アノテーションを使用しており、Java SE 8 API にリンクするように javadoc ツールを構成していることです。
Java SE 8 API と JSR-305 の両方が を使用するjavax.annotation
ため、javadoc は Java SE 8 からのものか JSR-305 からのものかを実際に判断できないため、動作中の Java SE 8 javadoc ではなく、Java SE 8 javadocjavax.annotation.Nullable
へのデッドリンクを生成する場合があります。 JSR-305 javadocs へのリンク。javax.annotation.Nullable
これを修正するためにjavadocを構成する方法はありjavax.annotation.Resource
ますか?
java - Java で @Deprecated として機能する @Stub アノテーションを作成する
一部のクラスがテスト用であることを示すために、Java で@Stub
、@Example
またはアノテーションを作成したいと思います。@Mock
また、ライブラリのユーザーがそれらを使用するのを思いとどまらせるために、これらのクラスを非推奨にするのが好きです。@Nullable
JSR305 に類似したものやその他のアノテーションを作成するのが好きです。
私はこれを思いついた:
そしてユースケース:
残念ながら、 を使用しているにもかかわらず、ターゲットの注釈付きクラスではなく@TypeQualifierNickname
、私の@Stub
注釈が Intellij および javac コンパイラによって非推奨としてマークされているようです。
javac や IDE を変更しなくても機能する方法はありますか?
java - JSR305 OSGi Exports brave
brave コア モジュールは javax.annotation;version="[3.0.0,4)" のエクスポートを追加しました。これにより、JBoss Fuse で brave を使用して OSGi アプリケーションをデプロイする際に問題が発生します - システム バンドルはすでに javax.annotation;version=" をエクスポートしているためです。 1.0」。
findbugs(JSR305) パッケージのような開発時の依存関係がランタイムの一部としてエクスポートされるのはなぜだろうか??
これに対する回避策はありますか?? servicemix の JSR 305 バンドルを訴えて、karaf などの一般的なコンテナーに準拠した勇敢な OSGi バンドルを作成することはできませんか??