一 注解的作用:
1. Annotation(注解)是JDK5.0引入的新技术。它不是程序本身,用于对程序作出解释(跟注释类似)。
2. 可以被其他代码读取(比如:编译器等)
3. 这里对于内部注解不做讨论,有兴趣可以自行百度
二 注解的格式:
注解是以 “@注释名称(参数1,参数2...)” 在代码中存在。
例如:@SupperssWarnings(value = "unchecked")
三 注解的作用域:
可以作用于:package , class , method , field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制等手段
实现对这些元数据的访问。
四 自定义注解
package cn.foxsand.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 1. @interface:声明一个注解类
* 2. value():每一个方法实际上是声明了一个配置参数
* 2.1 方法名称 = 参数名称
* 2.2 返回值类型 = 参数的类型(返回值类型只能是:基本类型、Class、String、enum)
* 2.3 通过default来声明参数的默认值
* 2.4 如果只有一个参数成员,通常参数名为value(非强制性)
* 3. @Target、@Retention:元注解,JAVA定义了4个标准的meta-annotation类型(Target、Retention、Documented、Inherited),它们被用来提供对其他注解类型做说明,
* 这里只对最常用的2个注解做说明。
*/
//描述注解的使用范围,取值于:ElementType(PACKAGE:包、TYPE:[类、接口、枚举、Annotation类型]、CONSTRUCTOR:用于描述构造器、FIELD:描述属性、METHOD:方法
@Target(value = {ElementType.METHOD , ElementType.TYPE})
//注解的保存级别:取值于:RetentionPolicy(SOURCE:源文件有效、CLASS:class文件有效、RUNTIME:运行时有效,为RUNTIME时可以被反射读取。
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation01 {
String value() default "";
}
注:注解解析,整理中!