アノテーション (メタデータとしても知られています) は、コード内に情報を追加するための正式な方法を提供し、後でデータのある時点でこれらを非常に便利に使用できるようにします。
アノテーション付きメソッドは他のメソッドと変わりません。アノテーションは、メソッドの任意の修飾子 (public、static、void など) とともに使用できます。構文の観点から見ると、アノテーションは修飾子とほぼ同じように使用されます。
アノテーションの定義はインターフェースの定義とよく似ています。実際、他の Java インターフェースと同様に、 アノテーションもクラス ファイル にコンパイルされます。
アノテーションを定義する場合、@Target
、@Retention
などのいくつかの メタアノテーション が必要になります。 @Target
,@Retention
。
在注解中,一般都会包含一些元素以表示某些值。当分析处理注解时,程序或工具可以利用这些值。注解的元素看起来就像接口的方法,唯一的区别是你可以为其指定默认值。元素的类型有限制。
没有元素的注解称为标记注解(marker annotation)。
所有注解都继承了annotation
。
package net.mrliuli.annotations;import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Test {} //(marker annotation)
定义在java.lang
中的三种标准注解:
@Overrided
@Deprecated
@SuppressWarnings
四种元注解:
@Target 表示该注解可以用于什么地方。
@Retension 表示需要在什么级别保存该注解信息。
@Documented 将此注解包含在Javadoc中。
@Inherited 允许子类继承父类中的注解。
注解元素的类型有限制,不可以是任意类型,使用除允许类型以外的类型编译器会报错。
默认值限制:
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SimulationNull{ public int id() default -1; public String description() default ""; }
首先,元素不能有不确定的值。也就是说,元素必须要么具有默认值,要么在使用注解时提供元素的值。
其次,对于非基本类型的元素,无论是在源代码中声明时,或是在注解接口中定义默认值时,都不能以null
マーカーアノテーションと呼びます。 すべてのアノテーションは annotation
java.lang
で定義された 3 つの標準アノテーション: null
をその値として使用することはできません。この制約により、各注釈宣言にはすべての要素が存在し、対応する値を持つため、注釈プロセッサが要素の有無を表現することが困難になります。この制約を回避するには、要素が存在しないことを示す空の文字列や負の数値などのいくつかの特別な値を定義するだけです: 🎜🎜🎜🎜🎜 外部ファイルを生成します。一部のフレームワークでは、ソース コードを操作するために追加情報が必要ですが、この場合、その値を表現するにはアノテーションが最適です。 Enterprise JavaBeans などのテクノロジには、デプロイメント記述ファイルが必要です。 Web サービス、カスタム タグ ライブラリ、およびオブジェクト/リレーショナル マッピング ツール (Toplink や Hibernate など) には通常、XML 記述ファイルが必要であり、これらの記述ファイルはソース コードから分離されています。 🎜🎜🎜🎜2 注釈プロセッサの作成🎜🎜 注釈を使用するプロセスの重要な部分は、注釈🎜を読み取るために使用される🎜🎜注釈プロセッサ🎜🎜を作成して使用することです。 🎜🎜🎜🎜リフレクション機構のAPIでアノテーションプロセッサを構築できる🎜🎜🎜🎜外部ツールaptでアノテーション付きのJavaソースコードを解析できる🎜🎜🎜🎜関連記事: 🎜🎜🎜Javaプログラミング思考を学ぶ教室(5)第18章-Java IOシステム🎜🎜🎜🎜Javaプログラミング思考学習教室(6) 第19章 - 列挙型🎜🎜以上がJavaプログラミング思考学習クラス (7) 第20章 - 注意事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。