通俗定义:注解相当于一种标记,标记有其相应的解释。
u在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记。
ujavac编译器,开发工具和其他程序可以用反射了解各种元素上标记的含义
u有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
官方定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
用来描述数据的数据-——相当于xml配置文件
配置优于代码、约定优于配置——开发中用“注解”
元注解—@Target
•表示该注解用于什么地方(限制注解)
ElemenetType参数包括:
•ElemenetType.CONSTRUCTOR构造器声明。
•ElemenetType.FIELD域声明(包括enum实例)。
•ElemenetType.LOCAL_VARIABLE局部变量声明。
•ElemenetType.METHOD方法声明。
•ElemenetType.PACKAGE包声明。
•ElemenetType.PARAMETER参数声明。
•ElemenetType.TYPE类,接口(包括注解类型)或enum声明。
语法格式:@Target(键=值,值=值)无没有键则是value=值
示例:@Target({ElementType.TYPE, ElementType.METHOD})
元注解—@Retention
•表示在什么级别保存该注解信息—作用范围
RetentionPolicy参数包括:
•RetentionPolicy.SOURCE注解将被编译器丢弃。
•RetentionPolicy.CLASS注解在class文件中可用,但会被VM丢弃。
•RetentionPolicy.RUNTIMEVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
•
语法格式:@Retention(键=值,值=值)无没有键则是value=值
示例:@Retention(RetentionPolicy.RUNTIME)
//保存在运行期中,可以被反射识别
•@Documented:将此注解包含在javadoc中 ,了解既可
•@Inherited:允许子类继承父类中的注解,了解既可
内建注解三个
•@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。父类中没有则会报错,不写此注解也可以,并不表示重写
•@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
•@SuppressWarnings:表示关闭一些不当的编译器警告信息。如忽略过期的方法等
内建注解三个