答えて
私が思うには、私は解決策を見つけました。私が思ったように、現在のjavacでは不可能です。ローカルアノテーションは単なるコメントであり、プラグイン可能なアノテーション処理APIによって処理されることはありません。しかし、JSR308には、タイプ変数、ローカル変数、注釈型チェック、キャスティングのパラメータとして素晴らしいものをサポートする型の注釈を扱う興味深い作業があります。見た目はopenJDK 8に組み込まれます。nice
その答えに感謝します。JSR269では、関連するインタフェースは、このような注釈にアクセスするためのgetAnnotation(Class<A> annotationType)
を継承javax.lang.model.element.VariableElement
、次のようになります。
for (VariableElement variable : ElementFilter.fieldsIn(methods)) {
final AnnotationType annotation = variable.getAnnotation(AnnotationType.class);
if (annotation != null) {
// ...
}
}
しかし、 'methods'は要素の集合であり、既に注釈付きフィールドが含まれているはずです(メソッドがそのセットに対して悪い名前になる)。だから 'fieldsIn'は"メソッド内のフィールド(=ローカル変数) "を返しませんが、与えられた要素のセットだけをフィルタリングします。その問題は、APIが(プロセスメソッドのパラメータとして)注釈付きのローカル変数を与えないことです。今のところ、私はすべての(注釈付きのクラスではない)クラスを処理し、ローカル変数の注釈を手動で検索する必要があるように見えます。あなたの例を使用する方法がありますか? – wrm
- 1. 注釈処理サードパーティのライブラリ
- 2. 注釈内の列挙体
- 3. 注釈のないjava型の処理
- 4. kapt Android Studioでの注釈処理
- 5. 注釈処理とjavapoetで静的メソッドをマージ
- 6. org.apache.cxf.jaxrs.ext.multipart.Attachmentを処理するスワッガー注釈
- 7. 注釈処理コンパイル手順は
- 8. JPA 2.0フィールド注釈対メソッド注釈
- 9. 特定の注釈付きメソッドに対するスプリングブート例外処理
- 10. メソッド注釈継承
- 11. AbstractProcessorのテスト(コンパイル時のJavaの注釈処理)
- 12. spring-boot-configuration-processorは注釈付きBeanメソッドを処理しますか?
- 13. 注釈地理algolia symfonyの
- 14. 注釈の処理はどこで行われますか?
- 15. Androidスタジオでの注釈処理がありません
- 16. ロンボク注釈を処理するためにkaptの設定
- 17. パッケージ内の注釈スキャナ
- 18. テンプレート内のDjango注釈
- 19. 抽象コントローラを拡張するコントローラ内のメソッドのカスタム注釈
- 20. java:メソッドのパラメータの前の注釈
- 21. Javaコンパイラ注釈処理のためのワークスペース全体の設定は、プロジェクトのプロパティで
- 22. FlowtypeでAngularJS $ inject注釈を正しく処理する方法
- 23. javacツールで注釈を処理する方法
- 24. Java注釈はいつ処理されますか?
- 25. 注釈処理を無効にするMaven Java EE Eclipse
- 26. Maven注釈処理プロセッサが見つかりません
- 27. @ ResourceDependency注釈はいつ処理されますか?
- 28. Java - Jackson適切なコンストラクタを処理しない注釈
- 29. 注釈によるクラス/メソッドの変換
- 30. StackTraceによるメソッド注釈の取得
JSR 308は、アノテーション処理を直接サポートしていません(ただし、ローカル変数注釈がクラスファイルに格納されていない長年のバグは修正されます)。 [Checker Framework](http://checkerframework.org)はJSR 308上に構築され、メソッド本体内の注釈を処理する便利な訪問者を提供します。 – mernst