Java注解

来源:互联网 发布:2017淘宝店铺装修 编辑:程序博客网 时间:2024/06/01 09:31

注解(Annotation)

注解的分类

按运行机制分类

.源码注解:在源码中存在,编译成.class文件后就不存在了.编译时注解:注解在源码和.class文件中都存在(JDK自带注解都属于编译时注解).运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解,可通过反射读取(@Autowired)

按来源分类

.来自JDK的注解.来自第三方的注解.自己定义的注解

元注解

给注解进行注解

JDK自带注解

@Override:重写@Deprecated:过时@Suppvisewarnings:忽略警告

第三方注解

Spring

@Autowired:自动注入@Service@Repository

Mybatis

@InsertProvider:插入@UpdateProvider:更新@Options

自定义注解

    @Target({ElementType.METHOD,ElementType.TYPE})      /*Target是注解的作用域 ROURCE、CLASS、RUNTIME*/    @Retention(RetentionPolicy.RUNTIME)    /*Retention是生命周期*/      @Inherited    /*Inherited允许子类继承*/    @Documented     /*Documented,生成javadoc时会生成注解信息*/    public @interface Description{  //.使用@interface关键字定义注解    String desc();  //.成员以无参无异常方式声明    int age() default 18; //.可以用default为成员指定一个默认值    /*如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)*/    /*注解类可以没有成员,没有成员的注解称为标识注解*/    /*  成员类型只能为基本数据类型及String,Class,Annotation,Enumeration   */

解析注解

通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑

步骤

.使用类加载器动态加载类Class c = Class.forName("com.test.Child");.找到类上面的注解boolean isExist = c.isAnnotationPresent(Description.class).拿到注解实例Description d = (Description)c.getAnnotation(Description.class)/*Description是注解名*/
0 0
原创粉丝点击