

public abstract可以省略

注解里面不允许返回void类型

new一个class选择枚举类型

Person这个就是一个枚举类

返回一个枚举类型

再定义一个注解类


注解里面可以返回另外一个注解的类

返回一个字符串的数组

定义一个Worker的class类型

返回普通的类为注解的类型 不可以!

使用注解
其他都注释掉。只保留int 类型的show1方法

使用我们定义的这个注解,提示有一些属性没有赋值

缺少show1的必须的一个值

show1方法就是注解的属性名。

所以我们在给注解的方法名 起名字的时候尽量起的名字像是属性。例如下面修改为age


再定义一个String类型的name

多个值用逗号隔开

default属性默认值
不想给name这个值赋值,可以加一个默认值。在定义的时候默认值为张三

那么下面name的值就不是必须要赋值了


特殊的属性名value
把方法名改成value,value是一个特殊的名

那么在使用注解的时候就是

如果你只有一个属性需要赋值,并且这个属性叫做value的话可以省略


例如这里@SupperessWarnings里面没写属性名,那么属性名肯定是叫做value


源码里面 这个属性名确实是value

枚举类型的赋值
如果是以偶多个属性需要赋值,这里的value是不能省略的

枚举类型的赋值。相当于我们的静态常量

注解类型的赋值

数组类型赋值
用大括号包裹起来

如果数组内只有一个值的话,大括号是可以省略


总结
