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