文章目录
是什么
一个东西的特征。
声明一个注解
public @interface ABC{
}
注解的注解
这个注解的特征
有效期@Retention
- RetentionPolicy.SOURCE,编译前就丢
- RetentionPolicy.CLASS,编译完了再丢
- RetentionPolicy.RUNTIME,不丢
可放置的地点@Target
- ElementType.ANNOTATION_TYPE,注解
- ElementType.CONSTRUCTOR,构造方法
- ElementType.FIELD,成员
- ElementType.LOCAL_VARIABLE,局部变量
- ElementType.METHOD,方法
- ElementType.PACKAGE,包
- ElementType.PARAMETER,方法参数
- ElementType.TYPE,类型(类,接口,枚举等等)
可继承@Inherited
父类有注解,子类继承,也会有注解。
可重复@Repeatable
一个东西有多个同一类的特征。比如身兼多职。
注解的属性
注解作为一个对象,也会有其属性。
必填的
String value();
可选的
String value() default "";
属性赋值
给属性赋值
@XXX(name='xxx',value='xxx')
单独一个value可以简写
@XXX('xxx')
小案例
创建一个代表数据库表的注解@MyTable
有效期:不丢,RUNTIME
地点:类上,TYPE
不继承,不重复。
属性:value,表名,必填。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyTable {
String value();
}
在一个实体类上使用它
@MyTable("student")
public class Student {
}
在测试类中访问
@Test
public void fun1() {
MyTable tableInfo = Student.class.getAnnotation(MyTable.class);
String tableName = tableInfo.value();
System.out.println(tableName);
}
输出结果:
student