良いプログラマは共有チュートリアルJavaアノテーションとアプリケーション・プログラミング・ノート、注釈および使用を:
概念を初めて目には、ビューの点から最初のコメントがありました。
注意:説明や解釈に追加するコードを、コメントは、開発者がプログラムを理解するのに役立ちます。(コメント)白色点がコメントであることはポスターです。
注:コードに記述を追加し、解釈、このプログラムの説明を。(注釈)
JDK 5.0の当初から、Javaはつまり、アノテーション(注釈)、メタデータ(メタデータ)のサポートが追加されます。
三つの基本的な注釈:
@Override:親クラスのメソッドをオーバーライド定義、メソッドは、アノテーションを使用することができます
@deprecated:廃止されたプログラム要素(クラス、メソッドなど)を表すために使用されます
@SuppressWarningsは:コンパイラの警告を抑制する。
コメントとは何ですか
注釈コードは、ノートが技術を持った後、開発者が実行するクラスを伝えるためにどのように注釈を付けることができ、それは、構成ファイルを実行する方法をクラスに伝えるための伝統的な方法で、実際には設定ファイルを置き換えるために使用される特殊なマーク、です。Java技術における代表的なアプリケーションの注釈があります:反射法によってクラスのノートの中に入るために、クラスを実行する方法を決定します。
重要テクニカルノート:
コメントを定義する方法
どのように反射メモや注釈クラスを実行する方法を決定するための情報の反映に基づいて
2.1カスタム注釈:
注釈は、キーワードを使用@interfaceの新しいタイプを定義します
ステートメント注釈のプロパティ
プロパティの役割を注意:設定ファイルのオリジナルの書き込み情報は、注釈のプロパティによって記述することができます。
注釈プロパティ宣言の仕方:文字列名();
プロパティデフォルト宣言:Stringname()デフォルトの「XXX」 、
スペシャリティ値:注釈は、属性の名前の値を持っていますが、注釈を使用しているとき値は=一部を省略した場合など、 @MyAnnotation( "XXX")
特殊なプロパティ値[]。
注釈属性の種類があることができます:
文字列型
の基本データ型
クラス型の
列挙型の
注釈型
1次元配列の複数の種類
ケース1は、注釈の作成と使用方法を示し
公共 @interfaceの MyAnnocation {
文字列 名();
int型 NUM ()デフォルト 10 。
MyAnnocation2アノ()。
}
パブリック @interfaceの MyAnnocation2 {
文字列 値();
}
パブリック クラス DEMO1 {
@MyAnnocation (名前= "哈哈" 、 NUM = 50 、安野= @ MyAnnocation2 (値 = "XXX" ))
公共 ボイド ショー(){
システム。アウト。println ("XXXXXXX" );
}
}
2.2 JDKのメタアノテーション
元注釈は注釈注釈の変更を指します。
@Retention:注釈のみ指定されたドメインの定義を変更するために使用することができ、注釈を保持することができ、@Rentention RetentionPolicyは、この変数を介してドメインを指定し、型のメンバー変数を含んでいます。
RetentionPolicy.CLASS:コンパイラは、Javaプログラムの実行時にクラスファイルにメモを記録し、JVMが予約されることはありません注これはデフォルト値は..です
RetentionPolicy.RUNTIME:Javaプログラムを実行すると、コンパイラは、クラスファイルにメモを記録します。 JVMは、ノートを維持するとき、あなたは反射によってコメントを得ることができます。
RetentionPolicy.SOURCE:コンパイラは、この戦略のコメントを破棄
@Target:注釈が指定するために使用されている修正クラス@ターゲットのメンバーは、指定された値、のElementTypeのタイプのメンバ変数が含まれています。
@Documented:注釈注釈修飾クラスがJavadocドキュメントツールに抽出される元を指定するために使用されます。
@Inherited:それは注釈はクラスがアノテーションを使用して変更@Inheritedされている場合、それは自動的にサブクラスのコメントを持つことになります継承しているだろうに変更されます。
情報ノートを入手するためにケース2のデモ用反射
@Retention ( RetentionPolicy 。 RUNTIME )
公共 @interface PersonInfo {
文字列 名();
int型の 年齢()デフォルト 20 。
ストリング 性別()。
}
パブリック クラス PersonOpe {
@PersonInfo (名前= "李四" 、年齢= 20 、性別= "男" )
公共 ボイド ショー(文字列 名、int型の 年齢、文字列 GEN ){
システム。アウト。println (名);
システム。アウト。println (年齢);
システム。アウト。println ( GEN )。
}
}
パブリック クラス DEMO2 {
公共 静的 ボイド メイン(文字列[] argsが)スロー 例外{
PersonOpe OPE = 新しい PersonOpeを();
クラス<?> のclass1 = PersonOpe 。クラス。
方法メソッド = クラス1 。getMethod ("ショー" 、文字列。クラス、int型。クラス、文字列。クラス);
PersonInfo注釈 = 方法。getAnnotation ( PersonInfo 。クラス);
文字列の 名前=注釈。名();
int型の 年齢=注釈。年齢();
文字列の 性別=注釈。性別();
方法。起動( OPE 、名前、年齢、性別);
}
}