問題タブ [annotation-processor]

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 投票する
0 に答える
151 参照

java - javapoet は annotate 属性値の AnnotationValue をどのように処理しますか

AbstractProcessor を使用してカスタム アノテーションを取得するメソッド アノテーションの属性名と値を取得します 属性値の型は AnnotationValue です javapoet AnnotationSpec.Builder(xx) でコードを生成します。AddMember (String name, String format, Object... The args) 間違ったコードを生成しました: method (@ AnnotationName (value = "/" v1 / "/ v2"/")) Method (@annotationname (value= {"v1","v2"})) いくつかの注釈属性タイプがあるため、どの AnnotationValue がどれであるかをどのように判断し、javapoet で正しいコードを生成しますか?

javapoet によって現在生成されているエラー コードは次のとおりです。

0 投票する
3 に答える
2673 参照

java - ダガーは、他の注釈プロセッサによって生成されたクラスを見つけることができません

以前のプロジェクトで書いたいくつかのボイラープレート コードを生成する単純な注釈プロセッサを (単なる楽しみのために) 作成しました。Activityクラスのアノテーションを集めて実際に以下のようなモジュールを生成する

ただし、短剣で実行すると、短剣は注釈プロセッサによって生成されたクラスを見つけることができないようです。クラスが生成され、生成されたディレクトリに存在しますが、ソースコードで使用できますが、コンパイル時にダガーが次の例外を生成します。専門家の提案はありますか?

これはアプリのメイン コンポーネントです。

ActivityInjectorModuleクラスは、アノテーション プロセッサによって生成され、生成されたディレクトリに存在します。

アプリケーションクラス

生成されたクラスを自分で作成すると、すべてが完全に機能します。どういうわけか、コンパイル時に、注釈プロセッサによって生成されたときに短剣がクラスを見つけることができません。

ユーリー・クリコフの答えの後、

ユリの答え

生成されたファイルは同じパッケージに含まれていますが、完全修飾名で参照されていることもわかります。それでも短剣はエラーを報告します。

誰かが実験したい場合は、githubリポジトリへのリンクを次に示します