文章目录
- 1. 系统内建的Annotation
- 2. 自定义Annotation
- 3. Retention
- 4. 反射 与 Annotation
- 5. Target
- 6. Documented
- 7. Inherited
将配置直接写入到程序之中:Annotation
1. 系统内建的Annotation
@Override
,@Deprecated
,@SuppressWarnings
等
class Person5 {public String say(){return "人在说话!";}
}class Student5 extends Person5{@Override // 明确表示是覆写的函数,名称保持一致public String say() {return "学生在说话!";}@Deprecated // 不建议使用的操作,使用会出现警告public String getInfo(){return "hello";}
}class test7{@SuppressWarnings("deprecated")//压制警告信息public static void main(String[] args){Student5 s = new Student5();System.out.println(s.say());System.out.println(s.getInfo());}
}
2. 自定义Annotation
public @interface MyAnnotation名称 { }
//自定义Annotation
public @interface MyAnnotation{public String key() default "Michael";public String value() default "Ming";public Color color() default Color.RED;//限定枚举的参数范围public String[] url();
}@MyAnnotation(color=Color.BLUE, key="Michael", value="Ming",url={"https://michael.blog.csdn.net/","abc.xxx"})
class Info{}
3. Retention
也是一个 Annotation,其取值是通过 RetentionPolicy (枚举)指定
4. 反射 与 Annotation
//自定义Annotation
@Retention(value=RetentionPolicy.RUNTIME) // 运行的时候可见
@interface MyAnnotation{public String key() default "Michael";public String value() default "Ming";public EnumDemo.Color color() default EnumDemo.Color.RED;//限定枚举参数范围public String[] url();
}
5. Target
也是一种 Annotation
@Target(value=ElementType.METHOD) // 只能在方法上使用
//@Target(value = {ElementType.METHOD, ElementType.TYPE}) // 多个选项
@Retention(value=RetentionPolicy.RUNTIME)
@interface MyAnnotation{public String key() default "Michael";public String value() default "Ming";public EnumDemo.Color color() default EnumDemo.Color.RED;//限定参数范围public String[] url();
}
6. Documented
也是一种 Annotation
@Documented
可以在使用类中加入文档注释,方便生成文档
/*** 文档注释*/
7. Inherited
也是一种 Annotation,写了@Inherited
的 Annotation 才能被子类继承
@Inherited