最近私は注釈について読んできましたが、少し混乱しています。私は注釈@NotNullを使用しましたが、変数がnullでないかどうかチェックする方法はわかりません。いいえ、コード内でnullの値をチェックするものは何もありません。インターフェイスなので理にかなっています。実際の処理はどこで行われますか?なぜこの場所がコードで指定されていないのですか?私が見た例では、値を取る注釈を作成するだけですが、何もしないので、実装がどこにあるのか混乱します。注釈の処理はどこで行われますか?
答えて
注釈は単なるメタデータであり、もはやそれほど重要ではありません。 クラスに関するいくつかの詳細を指定する場合は、そのクラスに注釈を付けます。 メタデータを定義する従来のよく知られているXMLの方法の代わりに、(ある程度まで)それらについて考えてみてください。
誰かがあなたのXMLを読んで、メタデータで何かを作るコードを実行するのは明らかです。注釈でも同じことが起こります。注釈が属するフレームワークは、注釈を読み、この情報で何かを作る責任があります。 @NotNull
の場合、そのhibernate-validatorプロジェクト。 javaによって公開されたAPIは、リフレクション(注釈の情報にjava.lang.Class
、Method
、Field
などのようなクラス)でアクセスできます。だから、Hibernateバリデーターの中のどこかに、あなたのクラスに行くコードがあります。リフレクションによってアノテーションを読み、クラスがこれらのアノテーションを遵守しているかどうかをチェックします。 これらのアノテーションには、通常、保持ポリシー 'runtime'があります。これは、それらがバイトコードで保持され、これらのアノテーションを保持するクラスとともにロードされることを意味します。
Javaコンパイラで処理する必要がある注釈もあります。 @Deprecated
、@SuppressWarnings
などのように。そのような注釈を付けることの利点は、コンパイル段階でいくつかのコードの問題を見つけることができることです。
アノテーションプロセッサを配置して、コンパイルフェーズで「プラグイン」することもできますが、全く異なるストーリーです。
これは、アノテーションの使用方法を少し明確にしたいと考えています。
- 1. メソッド本体内の注釈の処理
- 2. 注釈 - NSArray - これを行う方法
- 3. Zend_Form/MVC、どこで準備と処理が行われるべきですか?
- 4. SQLAlchemyのエラー処理 - それはどのように行われますか?
- 5. 警告:最後のラウンドで作成されたタイプのファイル「[ここに挿入クラスは]」注釈処理
- 6. 注釈の代わりに?
- 7. JPAの注射はどのように行われますか?
- 8. @Guice注釈については、どこで@Guice注釈が見つかりますか。
- 9. Magento:Authorize.netテストモードで行われた再処理
- 10. Springの注釈付きコントローラのエラー検証を手動で処理します
- 11. データ注釈タグはどこに配置しますか?
- 12. 注釈地理algolia symfonyの
- 13. Gradle +注釈+ Flavors =注釈プロセッサを実行しません
- 14. Symfony2:私は自分の注釈リーダーをどこで起動できますか?
- 15. 別の注釈タイプの注釈フィールドのデフォルト値を指定することはできますか?
- 16. トランザクション処理:いつロールバックが行われますか?
- 17. Android注釈 - これは良い方法ですか?
- 18. メソッドのコメントと注釈...それぞれはどこに行くべきですか?
- 19. 処理がスムーズに行われない
- 20. JPA(EclipseLink)、繰り返される@Converter注釈のない型の処理?
- 21. アプリケーションの注釈を処理するときにエラーが発生しました
- 22. Googleクロージャではどこで機能注釈を使用しますか?
- 23. 注釈付きのREQUIRES_NEWメソッドはトランザクションなしで実行されますか?
- 24. @PreUpdate注釈の代わりにEclipseリンク?
- 25. ViewState(ViewStateEncryptionMode)の暗号化はどこで行われますか?
- 26. Eclipseコードでローカリゼーションはどこで行われていますか?
- 27. PHPでの例外処理:$ eはどこに行きますか?
- 28. オブジェクトのイベント処理はどのスレッドで処理されますか?
- 29. このイベントを処理する責任はどこに置かれますか?
- 30. @codeのJava注釈は何ですか