Java注記の紹介

2546 ワード

注釈とは?
Javaは1种の元のプログラムの中の要素を提供していかなる情报といかなるメタデータのルートと方法の注釈を関连するのはJava 1.5バージョンで提出したので、今とても流行して、多くの主流のフレームワークはすべて注釈を支持して、その上自分でコードを书く时もできるだけ注釈を使って、注釈を学んで他の人の书いたコードを読むことができて、特にフレームワークの関连するコード、プログラミングをより簡潔にし、コードをより明確にします.
Javaの一般的な注記:
1.ソース別
JDK自己注釈
@Override親クラスのメソッド、例えばtoString()メソッドを書き換える場合は、メソッドの前に@Overrideシステムを付けると、メソッドの正しさをチェックできます@Deprescatedあるクラスまたはメソッドに注釈を付けると、このメソッドまたはクラスが使用を推奨しなくなり、呼び出し時に削除線が表示されますが、使用できないわけではありません.ただ、使用を推奨しないということです.@SuppressWarningsを呼び出すには、指定された警告を無視する方法があります.
サードパーティ注記
Springの@Autowired@Service@Repository Mybatisの@InsertProvider@UpdateProvider@Options
メタ注記
@Retention@Target@Document@Inheritedの4種類の@Target({ElementType.METHOD,ElementType.TYPE})を含む注釈の注釈です.注釈の役割ドメインのリスト:CONTRUCTOR構築方法宣言FIELDフィールド宣言LOCAL_VARIABLEローカル変数宣言METHODメソッド宣言PACKAGEパッケージ宣言PARAMETERパラメータ宣言TYPEクラス、インタフェース@Retention(RetentionPolicy.RUNTIME)ライフサイクルタイプ:SOURCEはソースコードのみで表示され、コンパイル時にCLASSコンパイルを破棄するとclassに記録され、実行時にRUNTIME実行時に存在しない@Inheritedでサブクラス継承@Documentedがjavadocを生成するときに注記を含めることができます.
カスタム注記
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
//          ,         value(),               (=)
//         ,             
public @interface Description { //  @interface       
    //        ,            String,Class,Annotation,Enumeration
    String desc(); //            
    String author();
    int age() default 18;//   default          
}

カスタム注釈構文を使用するには、次の手順に従います.
@(=,=,...)
@Description(desc="I am eyeColor",author="Mooc boy",age=18)
public String eyeColor(){
    return "red";    
}

2.運行メカニズムによって分ける
ソース注釈:注釈はソースコードにのみ存在し、.classファイルにコンパイルするとコンパイル時注釈は存在しません.注釈はソースコードと.classファイルに実行時注釈が存在します.実行段階では機能し、実行ロジックにも影響を与える注釈です.
解析注記
コンセプト:クラス、関数、またはメンバーの実行時注記情報を反射して取得し、動的制御プログラムの実行を実現する論理的使用法は次のとおりです.
1.クラス・ローダを使用してクラスをロード
class c=Class.forName("クラスのフルネーム");//stringタイプパラメータを入力し、jvmに指定したクラスを検索してロードするように要求します.classオブジェクトの参照を返します.
2.クラス上の注記を見つける
boolean isExist = c.isAnnotationPresent(Description.class);//指定したタイプの注釈がこの要素に存在する場合はtrueを返します.そうでない場合はfalseを返します.
3.注記インスタンスを取得する
Description d = (Description)c.getAnnotation(Description.class);//注釈タイプを指定して、この要素の注釈(存在する場合)を返します.そうでない場合はnullまたはc.getAnnotations()を返します.すべての注釈をもらう
4.メソッドの注記を見つける
Method[] ms = c.getMethods();//クラスを返すすべての共通メソッドには、クラスを継承する共通メソッドが含まれます.もちろん、その実装インタフェースのメソッドfor(Method m:ms){boolean isExist=c.isAnnotationPresent(Description.class)}も含まれます.