java注釈入門の実例

3579 ワード

http://www.java3z.com/cwbwebhome/article/article8/81319.html?id=3239
注(Annotation)はコードに情報を追加するための形式化の方法を提供しています.これらのデータは後である時点で便利に使用できます. 注釈の文法は比較的簡単で、@記号の使用以外は、基本的にjavaの固有文法と一致しています.javaは三つの注釈を内蔵しています.java.langカバンの中に定義されています. @Overrideは現在の方法が親を覆う方法を表します. @Deprecatedは現在の元素は使用に賛成しないと表しています. @Suppres Warningsはいくつかの不正なコンパイラの警告情報をシャットダウンするという意味です. 以下は注釈を定義する例です. 
 import java.lang.annotation.Documented;     

 import java.lang.annotation.Inherited;     

 import java.lang.annotation.Retention;     

 import java.lang.annotation.Target;     

 import java.lang.annotation.ElementType;     

 import java.lang.annotation.RetentionPolicy;     

     

 /*   

  *    @Target,@Retention,@Documented,@Inherited   

  *    

  * @Target            ,    ElemenetType     :   

  * ElemenetType.CONSTRUCTOR         

  * ElemenetType.FIELD    (   enum   )   

  * ElemenetType.LOCAL_VARIABLE          

  * ElemenetType.METHOD        

  * ElemenetType.PACKAGE       

  * ElemenetType.PARAMETER        

  * ElemenetType.TYPE  ,  (      ) enum     

  *            

  * @Retention               。    RetentionPolicy     :   

  * RetentionPolicy.SOURCE             

  * RetentionPolicy.CLASS    class     ,   VM     

  * RetentionPolicy.RUNTIME VM          ,                 。   

  *            

  *@Documented         javadoc     

  *        

  *@Inherited                

  *      

  */    

 @Target(ElementType.METHOD)     

 @Retention(RetentionPolicy.RUNTIME)     

 @Documented    

 @Inherited    

 /*   

  *      Test   

  *           id   description   

  * description         "no description"   

  */    

 public @interface Test {     

     public int id();     

     public String description() default "no description";     

 }    
以下は注釈を使って注釈を解析する例です.
 import java.lang.reflect.Method;     

     

 public class Test_1 {     

     /*   

      *            

      */    

     @Test(id =1, description ="hello method_1")      

      public void  method_1() {      

     }      

      

      @Test (id = 2 )      

      public void method_2() {      

     }      

      

      @Test(id =3, description ="last method" )      

      public void method_3() {      

     }      

      

      /*    

      *     , Test_1                     

      */      

      public static void main(String[] args) {      

         Method[] methods = Test_1.class.getDeclaredMethods();      

          for(Method method : methods) {      

              /*    

              *                      

              */      

              boolean  hasAnnotation = method.isAnnotationPresent(Test.class);      

              if  (hasAnnotation) {      

                  /*    

                  *                      

                  */      

                 Test annotation = method.getAnnotation(Test.class );      

                 System.out.println("Test(method ="  + method.getName()      

                         + " , id = "+ annotation.id() + ", description = "      

                         + annotation.description() + ")" );      

             }      

         }      

     }      

      

 }   
出力結果:
C:\java>java Test_1 Test(method=methodu 1,id=1,description=hello methodu 1)Test(method=methodu 2,id=2,description=no description)Test(method=methodu 3,id=3,description=methodion=3)