Java
注解(
Annotation
)又称
Java
标注,是
JDK5.0
引入的一种注释机制。
Java
语言中的类、
构造器、
方法、成员变量、参数等都可以被注解进行标注。
自定义注解 --- 格式
自定义注解就是自己做一个注解来使用。
public @interface 注解名称{
public 属性类型 属性名() default 默认值;
//Java支持的数据类型基本上都支持
}
//自定义注解
public @interface MyTest1{
String a();
boolean b() default true;
String[] c();
}
//应用
@MyTest1(a = "AA", c = {"CA", "CB"})
public class AnnotationTest1{...}
注解的作用
1.
对
Java
中类、方法、成员变量做标记,然后进行特殊处理
,至于到底做何种处理由业务需求来决定。
2.例如:
JUnit
框架中,标记了注解
@Test
的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行。
特殊属性
1.
value属性,如果只有一个value属性的情况下
,
使用value属性的时候可以省略value名称不写!!
2.
但是如果有多个属性,
且多个属性没有默认值,那么value
名称
是不能省略的。
public @interface MyTest2{
String value01();
}
//应用
@MyTest1("value")
public class AnnotationTest2{...}
public @interface MyTest2{
String value01();
int age default 20;
}
//应用
@MyTest1("value")
public class AnnotationTest2{...}
注解的原理
元注解
元注解:注解注解的注解。
元注解有两个:
@Target: 约束自定义注解只能在哪些地方使用
@Target中可使用的值定义在ElementType枚举类中,常用值如下:
TYPE,类,接口
FIELD, 成员变量
METHOD, 成员方法
PARAMETER, 方法参数
CONSTRUCTOR, 构造器
LOCAL_VARIABLE, 局部变量
@Retention:申明注解的生命周期
@Retention中可使用的值定义在RetentionPolicy枚举类中,常用值如下:
SOURCE: 注解只作用在源码阶段,生成的字节码文件中不存在
CLASS: 注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值.
RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)
// 类,接口 成员变量
@Target({ElementType.TYPE, ElementType.METHOD})
//注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest3{...}