java注解

来源:互联网 发布:如何开淘宝实体店 编辑:程序博客网 时间:2024/05/17 00:15

java提供了一种原程序的元素关联人和信息和人和元数据的途径和方法,那就是注解。

一、java中的常见注解:

1、JDK自带注解    @Override        表明当前类实现自一个接口,这个注解表明当前方法必须是实现的接口的实现版本    @Deprecated        表明当前表示的方法已经过时,调用该方法的时候出现横线,说明该方法过时了    @Suppvisewarnings        表明当前方法中某些代码忽略某些警告2、常见第三方注解    Spring        @Autowired        @Service        @Repository    Mybatis        @InsertProvider        @UpdateProvider        @Options

二、java的注解分类:

1、按照运行机制分类    源码注解        注解只是在源码中存在,编译成.class时就不存在    编译注解        源码和.class中都存在(JDK自带的注解)    运行注解        在运行阶段还会起作用(@Autowired)2、按照来源分    来自JDK的注解    来自第三方注解    自定义注解3、元注解    给注解定义注解

三、java自定义注解:

    @Target({ElementTyoe.METHOD,ElementType.Type})    @Retention(RetentionPolicy.RUNTIME)    @Inherited    @Documented    public @interface Description{        String desc();        String author();        int age() default 18;    }
语法解析:    1、使用@interface关键字来定义注解    2、成员以无参无异常方式声明    3、可以给成员指定一个默认值    4、成员类型是受限的,合法的类型包括原始类型及String,Class,Annotation,Enumeration    5、如果注解只有一个成员,则成员名必须取名为value(),当然可以不需要这么做,这只是一种规定。在使用时可以忽略成员名和赋值号(=)    6、注解类可以没有成员,没有成员的注解称为标识注解    7、@Target定义作用位置,可以同时声明多个作用位置(几乎涵盖了类所有的地方)并不存在包含关系,是什么作用位置,那么就只能作用这一个位置    8、@Retention定义声明周期(可选值为source(只在源码显示)、class(编译时会记录到class中,运行时忽略)、runtime(运行时显示))    9、@Inherited是可以允许子类继承(并且只会继承这个类上面的注解,方法上的注解不会被继承)    10、使用自定义注解        使用注解的语法:@<注解名>(<成员名1>=<成员值1>,<成员名1>=<成员值1>,……)

四、解析注解

概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制层序运行的逻辑1、使用类加载器加载类2、找到类上面的注解(先使用isAnnotationPresent(注解名)判断是否有注解)3、拿到注解实例(getAnnotation(注解名))(可以使用注解实例.value()来获取该注解的值,也就是该注解括号中的内容)4、找到方法上的注解
原创粉丝点击