6、注解:注解的解析

1、前言

  • 我们会使用注解注释一个类的成分,那么就涉及到要解析出这些注解的数据。
  • 开发中经常要知道一个类的成分上面到底有哪些注解,注解有哪些属性,这都需要进行注解的解析。

2、注解解析相关的接口

1、Annotation:注解类型,该类是所有注解的父类,注解都是一个Annotation对象。
2、AnnotatedElement:该接口定义了与注解解析相关的方法。所有的类成分Class、Method、Field、Constructor:都实现了AnnotatedElement接口,他们都拥有解析注解的能力。

  • Annotation[] getDeclaredAnnotations
    获得当前对象上使用的所有注解,返回注解数组。
  • T getDeclaredAnnotation(Class<T> annotationClass)
    根据注解类型获得对应注解对象。
  • boolean isAnnotationPresent(Class<T> annotationClass)
    判断当前对象是否使用了指定的注解,如果使用了则返回true,否则,返回false。

3、解析注解数据的原理

  • 注解在哪个成分上,我们就先拿哪个成分对象。
  • 比如注解作用成员方法,就要获得该成员方法对应的Method对象,再来拿上面的注解。
  • 比如注解作用在类上,则获取该类的Class对象,再来拿上面的注解。
  • 比如注解作用在成员变量上,则要获得该成员变量对应的Field对象,再来拿上面的注解。

4、案例

1、定义注解Book,要求如下:
  • 包含属性:String value() 书名
  • 包含属性:double price() 价格
  • 包含属性:String[] authors() 作者
  • 限制注解使用的位置:类和成员方法上
  • 限制注解的有效范围:RUNTIME
2、定义BookStore类,在类和成员方法run()上面使用Book注解
3、定义AnnotationTest测试类,获取Book注解上的数据

5、案例实现代码

package com.zjl.study.注解.注解的解析;
import org.junit.Test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值