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