---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一、注解也相当于一种标记,加了注解就等于打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序就可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数,及局部变量上;
注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类,就好像你要调用某个类必须先开发好这个类;
二、1、@SuppressWarnings("deprecation"):压缩警告
@Deprecated标记某个方法过时
@Override子类覆盖父类的方法
2、@Retention元注解,三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIOME分别对应:
java源文件-->class文件-->内存中的字节码;默认值在class阶段;
3、@Target元注解,Target的默认值为任何元素,设置Target等于ElementType.METHOD,,原来 加在类上的注解就报错了,改为数组方式设置(ElementType.METHOD,ElementType,TYPE)就可以了
4、为注解增加高级属性
1)、数组类型的属性
int[] arrayAttr() default{1,2,3};
@MyAnnotation(arrayAttr={2,3,4});
如果数组属性中只有一个元素,这时候属性值部分可以省略大括号
2)、枚举类型的属性
EnumTest.TrafficLamp.lamp();
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN);
3)、注解类型的属性
MetaAnnotation annotationAttr() default @MetaAnnotation("***");
@MyAnnotation(annotationAttr=@MetaAnnotation("***"))
package A;
public @interface MetaAnnotation {
String value();
}
package A;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotation {
String color() default "blue";
String value();
int[] arrayAttr() default{3,4,5};
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");
}
package A;
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=4)
public class AnnotationTest {
public static void main(String[] args){
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);
System.out.println(annotation.color());
System.out.println(annotation.value());
System.out.println(annotation.arrayAttr().length);
System.out.println(annotation.annotationAttr().value());
}
}
}
注意:枚举和注解都是特殊的类,不能用new创建它们的实例对象,创建枚举的实例对象就是在其中增加元素。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>