小話java注釈メカニズム

2421 ワード

作文の原因:Java反射注釈というブロックはずっと筆者の盲区であるが、Java系開発者はこのブロックの重要性を知っている.おなじみのAndroid開発を例に、反射注釈大神たちを利用して、重複する冗長コードや明確な論理構造を大幅に減らすことができる依存注入フレームワークを作った.本文も今後の依存注入剖析に備えている.レベル制限のため、一部の場所で漏れがある可能性があるので、指摘してください.
定義#テイギ#
本章では,反射注釈に関する知識を引き続き検討する.ここでは,反射注釈よりも反射に関するいくつかの内容を共有した.本文を直接始めましょう.注釈とは?注記は、一般的な@Overrideのようなコードの記述です.これは、親を書き換える方法であることを説明する方法です.例えば@Deprescatedは1つの方法が時代遅れであることを説明する(それらの呼び出し時に横線を打つ方法は時代遅れの方法であり、この注釈の功績である).また@SuppressWarnings(「XXX」)は、様々な警告を無視するために使用されます.はい、ついでに公式の注釈も定義を話している間に説明しました.次に、カスタム注釈とサードパーティ注釈(実際にはカスタム注釈)を見てみましょう.
カスタム注記
カスタム注記の形式は次のとおりです.
@Target(ElementType.METHOD)
//   ,    、  、           
@Retention(RetentionPolicy.RUNTIME)
//    ,          ,SOURCE(    ),CLASS(    ),RUNTIME(    )
@Inherited
@Documented
public @interface Description {
    String value();
}

上の4つはメタ注釈(注釈の注釈)と呼ばれ、機能は注釈を参照し、主に@Inheritedについて説明します.1つの親クラスのどこかでこの注釈を使用すると、その親を継承する子クラスでもその注釈が効果的になります.@Documentedはjavadocで注釈の情報を出力するために使用されます.注記にメンバーが1つしかない場合はvalueをメンバー名として使用し、複数の場合は次のように自由に使用します.
public @interface Description{
    String desc();//             
    String author();
    int age() default 18;
}

注意メンバータイプには、基本タイプ、String、Class、Annotation、Enumerationが含まれます.メンバーがいなくてもいいです.それは注釈と呼ばれます.カスタム注釈を使用する場合は、役割ドメインの上に次の形式で書きます.@Description(desc="am",author="Mooc",age=18)解析
個人感覚解析注釈は注釈の最も興味深いところであり,これをうまく利用すれば多くのコードの最適化を実現することができ,具体的な実現は反射によって行われ,反射がはっきりしない場合は前の文章を参考にすることができる.次に、注釈解釈器の解釈方法の上の注釈を書きます.コードは次のとおりです.
public class DescriptionWorker {
    public static void work(){
        try {
            Class c = Class.forName("com.vince.reflect.ClassInfo");
            Method[] ms = c.getMethods();
            for(Method m:ms){
                boolean isExist = m.isAnnotationPresent(Description.class);
                if(isExist){
                    Description d = (Description) m.getAnnotation(Description.class);
                    System.out.println(d.value());
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

メソッドを取得してからクラス内部に注釈があるかどうかを判断し,メソッド上の注釈を取り出して値を印刷することがメソッド解釈器の動作原理である.基本的には反射の原理であり、主にisAnnotationPresent(Description.class);m.getAnnotation(Description.class)に注意しなければならない.
まとめ
注釈の価値に対する認識はいくつかの実際のコードを結合して分析しなければならない.その後、ブロガーは実戦剖析と結びつけて注釈を再認識する.