Javaアノテーションのデモ

、ノートに慣れる小さなデモ書き込むためには#
主な機能は、クラスの#のデモは、当社のカスタムメソッドアノテーションを含むスキャンすることで、その後、戻り値のマップにそれらを置きます

パブリック クラスQQ { 

    公共 静的 ボイドメイン(文字列[]引数)が
             スローIllegalAccessExceptionが、はIllegalArgumentException、にInvocationTargetException、ないInstantiationException { 

        マップの<string、オブジェクト>マップ= 新しい HashMapを<> (); 

        クラス <試験> clazz =テスト。クラス
        方法[]のMTDの =のclazz.getMethods()。
        (方法方法のMTD){
             // 判断方法上有没有注解
            ブール hasAnno = method.isAnnotationPresent(CacheInMap クラス)。
            オブジェクトの結果= NULLが; 

            //は、無料の方法は、注釈付き無視
            のIF(!HasAnno){
                 続行; 
            } 

            // パラメータのメソッドの数を取得する
            int型 ParamCount = method.getParameterCount();
             IF(ParamCount == 0 ){ 
                結果 = Method.invoke( clazz.newInstance()); 
            } そう IF(== ParamCount 1。){ 
                結果 = Method.invoke(clazz.newInstance()、 "" ); 
            } 

            // 注釈取得 
            CacheInMapアノ= method.getAnnotation(CacheInMapを。クラス);
            もし( "" .equals(anno.key())){ 
                文字列methodNameの = method.getName()。
                map.put(methodNameの結果)。
            } { 
                map.put(anno.key()、結果)。
            } 
        } 

        printMap(マップ)
    } 

    パブリック 静的 ボイド printMap(MAP <文字列、OBJECT> マップ){
         ため(のMap.Entry <文字列、オブジェクト> エントリ:map.entrySet()){ 
            System.out.printlnは(String.Formatの(「キー:%sは、値:%sの」、entry.getKey()、entry.getValue()))。
        } 
    } 

}
 
@Documented 
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD、ElementType.ANNOTATION_TYPE})
@のインタフェースCacheInMap { 
    文字列のキー()デフォルト "" 
} 

クラスのテスト{ 

    @CacheInMap(キー =「QWER」パブリック文字列法1(文字列str){
         リターン「これは方法1です」
    } 

    @CacheInMap 
    公共 int型の方法2(){
         リターン 1024 
    } 

    公共 ダブル法3(){
        返します 3.141592653を; 
    } 
}

 上記のコード番号の出力:

キー:方法2、値:1024
キー:QWER、値:これがメソッド1です

おすすめ

転載: www.cnblogs.com/lwmp/p/11496503.html