一、注解
注解起到标识作用。比如Junit的@Test注释。Junit会在运行时检查方法上是否存在此注解,如果存在,就通过反射来运行你的方法
1、注解的作用:替代配置文件
2、JDK中提供的三个基本的注解
@Override:说明是否覆盖了父类的方法。
@Deprecated:说明过时了。
@SuppressWarnings:抑制警告
@SuppressWarnings("抑制的警告的具体类型"):
unused:变量未使用
deprecation:使用了不赞成使用的类或方法时的警告
unchecked:执行了未检查的转换时的警告。比如没有使用泛型
falthrough:当switch程序块直接通往下一种情况而没有break时的警告
path:在类路径、源文件路径等中有不存在的路径时的警告。
serial:当在可序列化雷尚缺少serialVersionUID定义时的警告
finally:任何finally子句不能正常完成时的警告。
all:关于以上所有情况的警告。
3、注解学习目标:
a、自定义注解
b、反射注解
4、自定义注解的语法:
注解本身:public @interface MyAnnotation{}
使用关键字@interface定义一个类而已。这个类就是注解。
注解中的属性:
基本形式:类型 属性名称();
比如:String name();
使用:@MyAnnotationDemo1(name="hello")
特别注意:注解的属性的类型只能是:基本类型、String、Class、枚举、注解类型及以上类型的一维数组。
注解属性的默认值:
类型 属性名称() default 默认值;
注解中的特殊属性:
类型 value();
使用时,如果只给value设置值,可以这样用:@MyAnnotationDemo1(value="hello")或者@MyAnnotationDemo1("hello")
使用时,如果只给value设置值,还要给其他属性设置值,可以这样用:@MyAnnotationDemo1(value="hello",name="aaa")
类型[] value();
使用方式如同value。
使用方式:四种都ok
// @MyAnnotationDemo1(value={"a","b"})
// @MyAnnotationDemo1({"a","b"})
// @MyAnnotationDemo1({"a"})
// @MyAnnotationDemo1("a")
5、元注解:
定义:服务于注解的注解就是元注解。
***@Retention:注解的保留范围
RetentionPolicy.SOURCE:注解存在于源文件中
RetentionPolicy.CLASS:注解存在于源字节码文件中
RetentionPolicy.RUNTIME:注解存在于运行时
***@Target:注解出现的位置
@Documented: 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档.
@Inherited: 被它修饰的 Annotation 将具有继承性.如果某个类使用了被 @Inherited 修饰的 Annotation, 则其子类将自动具有该注解
原文:http://www.cnblogs.com/byron0918/p/4719698.html