1.元注解
@Target 注解适用目标
ElementType.TYPE 类 接口 枚举等
ElementType.METHOD 方法
ElementType.FIELD 变量
@Retention 保留策略
RetentionPolicy.SOURCE 注解将被编译器丢弃
RetentionPolicy.CLASS 注解在class文件中保留,但会被VM丢弃
RetentionPolicy.RUNTIME VM将在运行期保留注解,即可以通过反射读取到注解
@Document
将此注解包含在生成的javadoc中
@Inherited
默认情况下父类某个地方使用了一个注解,不会被继承到子类对应的地方,如果在注解上加上@Inherited,就会被继承到子类。
2.注解的定义
1)注解声明 @interface 注意元素后的括号
@Target(ElementType.METHOD)
public @interface wdwtest {
public int id();
public String description() default "no description";
}
2)注解的默认值必须为确定的值 不可以为null
3)使用getAnnotation方法可以获取到注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation{
String des();
}
@TestAnnotation(des = "1111")
class TestClass{
}
public class Wdwtest{
public static void main(String[] args){
Class<?> c = TestClass.class;
TestAnnotation ann = (TestAnnotation) c.getAnnotation(TestAnnotation.class);
System.out.println(ann.des());
}
}