---------------------- android培训、java培训、期待与您交流! ----------------------
1.注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
几种基本的注解
(1)@SuppressWarnings
(2)@Deprecated
(3)@Override
2.注解的应用结构图
注解类
@interface A{
}
应用了注解类的类
@A
Class B{
}
对应用了注解类的类进行反射操作的类
Class{
B.class.isAnnotationPresent(A.class);
A a = B.class.getAnnotation(A.class);
}
3.元注解:注解本身也是被注解的
@Retention元注解 三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分别对应:java源文件-->class文件-->内存中的字节码。
@Override、@SuppressWarnings和@Deprecated这三个注解的属性值分别是什么?->分别对应RetetionPolicy.SOURCE,RetetionPolicy.SOURCE,RetetionPolicy.RUNTIME
@Target
Target的默认值为任何元素,设置Target等于ElementType.METHOD,原来加在类上的注解就报错了,改为用数组方式设置{ElementType.METHOD,ElementType.TYPE}就可以了。
4.注解的属性
(1)注解的属性:
@MyAnnotation(color="red")
(2) 定义基本类型的属性和应用属性:
在注解类中增加String color();
@MyAnnotation(color="red")
(3)用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法
MyAnnotation a = (MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
System.out.println(a.color());
可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象
(4)为属性指定缺省值:
String color() default "yellow";
---------------------- android培训、java培训、期待与您交流! ---------------------