注解本质上是代码中的标签。有了标签可以在编译、类加载以及运行时执行指定的处理。
public @interface MyAnnotation { public String value() default "h"; //声明一个String类型的成员变量, 名字是value public String value2() default "w"; } @MyAnnotation(value = "hello", value2 = "world") public class Person { private String name; private int age; }
注解能有的成员变量类型很有限,基本不支持自定义类型。主要就是8种基本类型,以及 注解 Class enum 等等
元注解
可以加在注解上的注解
元注解主要有@Retention @Documented @Target @Inherited @Repeatable
Retention
Documented
Target
Inherited
Repeatable
//after java8 @Repeatable(value = ManTypes.class) public @interface ManType { String value(); } public @interface ManTypes { ManType[] value(); } //before java8 @ManTypes({@ManType(value = "教师"), @ManType(value = "工人")}) //after java8 @ManType(value = "教师") @ManType(value = "工人") public class Man{}
常见的预制注解
以及