注解分为三类:没有任何元素的注解,有一个元素的注解和有多个元素的注解。
1. Marker注解
这类注解没有任何元素,此类注解仅仅是一个标示。如下所示:
public @interface Good { }
2. 单值注解
只接受单值类型,数据成员使用单词value指定。指定成员的语法与声明方法类似。
public @interface Good { String value(); }
可以像下面一样使用注解:
@Good("this good")
但是如果数据成员不使用value定义,新定义如下所示:
public @interface Good { String description(); }
现在,需要使用下面的注解方式
@Good(description="this good")
注意:数据成员使用默认名称value时候,我们只指定了目标字符串,而省略了成员名称,这次我们需要显示拼写出数据成员的名称description,如果不这么做,编译器将会在编译过程中产生错误。
3. 多值注解
public @interface Good { String description(); String target(); }
多值注解的使用方式如下所示:
@Good(description="this good",target="examine")
4. 设置默认值
java允许为任何数据成员指定默认值,这可以使用default关键字来完成。例如:
public @interface Good { String description(); String target() default "examine"; }
当使用默认值注解的时候,target成员可以不指定,除非想为target设置不同的值。
5. 注解的定义规则
定义一个注解还是很简单的,需要遵照以下几个规则就可以了:
(1)注解声明以@interface开设,随后是注解的名称。
(2)为了创建注解的参数,需要使用参数的类型声明方法:
方法声明不应包含任何参数;
方法声明不应包含任何throws子句;
方法的返回类型应该为:基本类型,字符串,类,枚举,上述类型的数组。
具体使用方式请参考我的另外一篇博文: