一、注解的意义
描述属性的数据,也称描述数据的数据,例如,描述数据库数据的数据的什么,是表结构,那么表结构就是元数据。即元数据(关于数据的数据,即描述数据特征的数据,一般是结构化数据(例如表结构数据就是元数据)(如存储在数据库里的数据,规定了字段的长度、类型等))
二、注解的定义(元数据的定义,可以想象成数据库表结构的定义)
语法:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUN)
public @interface 注解名称{
// 定义属性:属性的定义按照申明方法的方式定义
String name() defalut "zhangsan"; // 定义了一个name熟悉
}
使用:
@注解名称(name=“lisi”) // name是属性(或参数)的名称, lisi是属性(或参数)的值
注解的属性值类型(或参数)的可支持数据类型:
1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
2.String类型
3.Class类型
4.enum类型
5.Annotation类型
6.以上所有类型的数组
三、应用注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface Todo {
public enum Priority {LOW, MEDIUM, HIGH}
public enum Status {STARTED, NOT_STARTED}
String author() default "Yash";
Priority priority() default Priority.LOW;
Status status() default Status.NOT_STARTED;
}
@Todo(priority = Todo.Priority.MEDIUM, author = "Yashwant", status = Todo.Status.STARTED)
public void incompleteMethod1() {
//Some business logic is written
//But it’s not complete yet
}
Class businessLogicClass = BusinessLogic.class;
for(Method method : businessLogicClass.getMethods()) {
Todo todoAnnotation = (Todo)method.getAnnotation(Todo.class);
if(todoAnnotation != null) {
System.out.println(" Method Name : " + method.getName());
System.out.println(" Author : " + todoAnnotation.author());
System.out.println(" Priority : " + todoAnnotation.priority());
System.out.println(" Status : " + todoAnnotation.status());
}
}