注解的反射

我们用Annotation接口来描述 注解这个东西,注解是一种特殊的接口,而接口是一种特殊的类

所以 注解可有抽象方法! 调用这方法的方式就是 : 注解实例.抽象方法( );

public @interface 注解名(){

int value( ) ;
String name( );
}

现在可以明白为什么创建注解的方式是这样了吧!

@interface ,可以看出这样一个特殊的接口,

int value()这就是一个抽象方法,返回值是int类型。那这是怎样用呢?

@VIP(value = 2,name = “sss")
public void show( ){

}

这个value=2是什么鬼,name又是什么 ?

它是在反射的时候用的!下面来说说如何用反射得到注解的信息!

通过反射手段去获取类的元素,必要前提是得到 目标类的字节码

所以 首先要得到 注解所在类的 class 字节码

上面的例子,注解在方法上,那就要再去获取那个方法

得到方法后: VIP v = show.getAnnotation(VIP.class);

如何理解这个方法?

首先,注解贴在方法上,那就是方法里的东西,该由方法去获取,

后面的VIP.class参数,是因为注解是一个接口类,要得到一个类的实例,是利用该类的字节码去反射出
它的实例出来,最后得到一个VIP类型的注解,赋值给 v

得到 注解的实例v 后,就可以去获取 注解上value和name的值了

v.value( ); 就这样就可以获取了一个int 类型 的 2
在使用注解时就把要返回的值写在了后面,后面直接 调用 v.value( ) 这抽象方法就可以得到
int i = v.value( ); i 就是2

同理,String s = v.name( ); s,就是sss

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,834评论 18 399
  • 高新技术的重要性 这里的高新技术指的是Java基础中的知识,比如:反射、注解、代理、线程池、依赖注入等等。市面上的...
    庞哈哈哈12138阅读 2,031评论 1 19
  • 留意简书,因为开始时小众在用,出精品率高,干货多。后来用户多了,无病呻吟多了,想看到干货,得一篇一篇翻,慢慢地减少...
    遥远那方阅读 203评论 0 0
  • 【同读一本书·秦圆圆】 ――《不抱怨的世界》 ―――2016-8-24 原文:当孩子把得了四个A和一个C的成绩单带...
    昌乐全福元阅读 227评论 0 0