java注解

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、找到方法上的注解
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值