1.注解的作用
- 提供元数据信息
- 编译时检查
- 运行时处理
- 代码分析
- 与框架集成
2.基本步骤
1.使用@interface关键字定义一个注解类型
public @interface AnnotationDemo {
//注解成员
String value();
int num() default 0;
}
2.在注解类型中定义成员变量,该注解使用时可以设置这些成员的值。注解的成员变量的类型可以是基本类型、string、class、枚举类型、其它注解类型或上述类型的数组。
3.可以给注解的成员变量设置默认值,使用defalut关键字,如果不设置默认值则表示必须在使用注解时指定该成员的值。
4.在代码中使用自定义注解,格式为@注解名(成员名1=值1,成员名2=值2......)
@AnnotationDemo(value = "testAnnotion") //使用自己定义的注解
public class AnnotationTest {
}
5.自定义注解可以标记在类、方法、字段、参数等元素上,对于不同的元素可以使用不同的元注解来限制注解的使用范围。
@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {
//作用在方法上
@AnnotationDemo(value = "method")
public void test1(/*作用在参数上*/@AnnotationDemo(value = "param") String str){
//作用在变量上
@AnnotationDemo(value = "field")
String a;
}
}
6.获取注解的值
@Target({ElementType.TYPE, ElementType.METHOD})//意味这个注解可以作用在方法和类上
@Retention(RetentionPolicy.RUNTIME)//注解作用在运行阶段
public @interface AnnotationDemo {
//注解成员
String value();
int num() default 0;
}
@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {
}
class test{
public static void main(String[] args) {
//通过反射获取类
Class c = AnnotationTest.class;
//判断该类是否存在自定义的注解AnnotationDemo
if (c.isAnnotationPresent(AnnotationDemo.class)){
AnnotationDemo annotation = (AnnotationDemo) c.getAnnotation(AnnotationDemo.class);
System.out.println(annotation.value());
System.out.println(annotation.num());
}
}
}
运行结果: