0%

Java注解

注解又叫元数据,可以提供代码难以描述的信息,有助于减轻编写“样板”代码的负担,编写更加简洁易读的代码。

注解定义

注解的定义类似接口的定义,除了@符号外,注解很像一个空的接口,并且也会被编译成class文件。定义注解时需要一些元注解(meta-annotation),例如@Target和@Retention,@Target用来定义注解用于什么地方(例如一个方法还是一个域),@Retention用来定义注解在哪一个级别可用(源代码中、类文件中还是运行时)。

1
2
3
4
5
6
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface UserCase {
int id();
String description() default "Default description";
}

注解中一般会包含一些元素表示一些值。分析处理注解时,可以利用这些值。注解的元素看起来就像接口的方法,唯一的区别是可以指定默认值。注解元素的可用类型包括:

  1. 所有基本类型(int, float, boolean等),不能使用包装类
  2. String
  3. Class
  4. enum
  5. Annotation
  6. 以上类型的数组
    对于非基本类型元素,无论在源代码声明时,还是在注解接口定义默认值时,都不能以null作为值。如果需要表示对应值不存在,可以用特殊的值表示, 例如空字符串、负数等。

参考资料

《Java编程思想》