Java 注解
一、注解的意义
描述属性的数据,也称描述数据的数据,例如,描述数据库数据的数据的什么,是表结构,那么表结构就是元数据。即元数据(关于数据的数据,即描述数据特征的数据,一般是结构化数据(例如表结构数据就是元数据)(如存储在数据库里的数据,规定了字段的长度、类型等))
二、注解的定义(元数据的定义,可以想象成数据库表结构的定义)
语法:
@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.以上所有类型的数组
具体参考:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
http://www.importnew.com/10294.html
三、应用注解
@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()); } }