@Override//复写注解
@Deprecated//过时注解
@Suppvisewarings(“deprecate”)//忽略警告的注解
常见第三方注解:这两个都是编译时注解
Spring中的@Autowired@Service@Repository
Mybatis中的@InsertProvider@UpdateProvider@Options
注解
- 源码注解—–注解只存在源码中,编译成.class文件就不存在了
- 编译时注解—-在源码和.class中都是存在的
- 运行时注解—-在运行阶段还起作用的注解
元注解
就是给注解注解的一种注解
自定义注解
//这四行就属于元注解
@Target({ElementType.METHOD,ElmentType.TYPE})//作用域
@Retention(RetentionPolicy.RUNTIME)
@Inherited//允许子类继承
@Documented//生成javac的时候会包含注解的信息
public @interface Description{
String desc();
String author();
int age() default 18;
}
//使用@interface 关键字
//成员以没有参数没有异常的方式来声明
//可以使用default为成员指定一个默认值
//成员类型是受限制的除了基本类型外还有String Class Annotation Enumeration
//注解中成员只有一个的时候则成员的名字必须是叫做value(),在使用的时候可以忽略成员名和赋值号(=)
//注解类可以没有成员,没有成员的注解称为标识注解
注解和反射的配合使用
Class c = Class.forName("XXXXX");
//一般通过的是判断某一注解存在不c.isAnnotationPresent(XXX.clsss);
//XXX xx = c.getAnnotation();
//通过xx注解对象就可以获得他的属性值
//同样的对于方法来说也是一样的