注解又叫元数据,可以提供代码难以描述的信息,有助于减轻编写“样板”代码的负担,编写更加简洁易读的代码。
注解定义
注解的定义类似接口的定义,除了@
符号外,注解很像一个空的接口,并且也会被编译成class文件。定义注解时需要一些元注解(meta-annotation),例如@Target和@Retention,@Target用来定义注解用于什么地方(例如一个方法还是一个域),@Retention用来定义注解在哪一个级别可用(源代码中、类文件中还是运行时)。
1 | (ElementType.TYPE) |
注解中一般会包含一些元素表示一些值。分析处理注解时,可以利用这些值。注解的元素看起来就像接口的方法,唯一的区别是可以指定默认值。注解元素的可用类型包括:
- 所有基本类型(int, float, boolean等),不能使用包装类
- String
- Class
- enum
- Annotation
- 以上类型的数组
对于非基本类型元素,无论在源代码声明时,还是在注解接口定义默认值时,都不能以null作为值。如果需要表示对应值不存在,可以用特殊的值表示, 例如空字符串、负数等。
参考资料
《Java编程思想》