Appearance
语法要求
- 使用
@interface定义注解 - 成员使用无参无异常方式声明
- 可以用
default为成员指定一个默认值 - 成员的类型是受限制的,包括原始类型、
String、Class、Annotation、Enumeration - 如果注解只有一个成员,则成员名必须取名为
value()(建议) - 可以没有成员,叫做标识注解
我们先来看一段示例,再接着说
java
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
String value();
}@Target代表注解可以使用在哪些位置上,常见的 具体取值说明如下列表格
| 值 | 说明 |
|---|---|
| TYPE | 类、接口 |
| FIELD | 字段声明 |
| METHOD | 方法声明 |
| PARAMETER | 形参声明 |
| CONSTRUCTOR | 构造方法声明 |
| LOCAL_VARIABLE | 局部变量声明 |
| PACKAGE | 包声明 |
@Retention内容值如下
| 值 | 说明 |
|---|---|
| SOURCE | 在源码显示,编译时丢弃 |
| CLASS | 编译时会记录到 class 中,运行时忽略 |
| RUNTIME | 运行时存在,可通过反射读取 |
@Inherited是标识类注解,表示允许子类继承@Documented生成javadoc时,包括注解的信息
