注解
注解 Annotation
一個注解就是一個類
@SuppressWarnings("deprecation") 源文件階段
@Override 重寫 源文件階段
@Deprecated 過時 RUNTIME階段
注解類
@interface A{
}
應用了“注解類”的類
@A
class B{
}
注解反射
class C{
B.class.isAnnotationPresent(A.class)
A a=B.class.getAnnotation(A.class)
}
@Retention元注解
RetetionPolicy.SOURCE 對應源文件
RetetionPolicy.CLASS 對應class文件
RetetionPolicy.RUNTIME 內存中的字節(jié)碼
RetetionPolicy是枚舉,
只包含 SOURCE,CLASS,RUNTIME三個元素
1 //注解類
2 import java.lang.annotation.ElementType;
3 import java.lang.annotation.Retention;
4 import java.lang.annotation.RetentionPolicy;
5 import java.lang.annotation.Target;
6
7 @Retention(RetentionPolicy.RUNTIME)
8 @Target({ElementType.METHOD,ElementType.TYPE})
9 //Target 參數(shù) 一個可以,兩個以上 參數(shù)為數(shù)組
10 //注解的注解目標({方法,類}) 描述class,interface enum 的父類都是TYPE
11 public @interface MyAnnotation {
12 //為注解添加屬性,這里的屬性就是方法,不需要加public abstract。系統(tǒng)默認加
13 String color() default "blue"; //為屬性增加默認值
14 String value(); //當只有一個value屬性時,賦值時可以不用value=
15
16 }
17
2 import java.lang.annotation.ElementType;
3 import java.lang.annotation.Retention;
4 import java.lang.annotation.RetentionPolicy;
5 import java.lang.annotation.Target;
6
7 @Retention(RetentionPolicy.RUNTIME)
8 @Target({ElementType.METHOD,ElementType.TYPE})
9 //Target 參數(shù) 一個可以,兩個以上 參數(shù)為數(shù)組
10 //注解的注解目標({方法,類}) 描述class,interface enum 的父類都是TYPE
11 public @interface MyAnnotation {
12 //為注解添加屬性,這里的屬性就是方法,不需要加public abstract。系統(tǒng)默認加
13 String color() default "blue"; //為屬性增加默認值
14 String value(); //當只有一個value屬性時,賦值時可以不用value=
15
16 }
17
1 //注解的使用
2 @MyAnnotation(color="red",value="444")
3
4 public class AnnotationTest {
5
6 /**
7 * @param args
8 */
9 @SuppressWarnings("deprecation")
10 @MyAnnotation("bacd")
11 public static void main(String[] args) {
12 // TODO Auto-generated method stub
13 System.runFinalizersOnExit(true);
14 //判斷字節(jié)碼中是否有注解,不加RUNTIME則沒有,字節(jié)碼在內存中,RUNTIME內存運行階段
15 if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class))
16 {
17 MyAnnotation myAnnotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
18 System.out.println(myAnnotation.color());
19 }
20 }
21
22 }
23
2 @MyAnnotation(color="red",value="444")
3
4 public class AnnotationTest {
5
6 /**
7 * @param args
8 */
9 @SuppressWarnings("deprecation")
10 @MyAnnotation("bacd")
11 public static void main(String[] args) {
12 // TODO Auto-generated method stub
13 System.runFinalizersOnExit(true);
14 //判斷字節(jié)碼中是否有注解,不加RUNTIME則沒有,字節(jié)碼在內存中,RUNTIME內存運行階段
15 if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class))
16 {
17 MyAnnotation myAnnotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
18 System.out.println(myAnnotation.color());
19 }
20 }
21
22 }
23
posted on 2011-01-04 10:01 杰點 閱讀(208) 評論(0) 編輯 收藏 所屬分類: JAVA