java反射机制Reflection详解

 更新时间:2019年04月04日 08:36:30   投稿:laozhang  
在本篇文章里小编给大家分享了关于java反射机制Reflection的相关知识点,需要的朋友们学习下。
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

Java语言有好些个名词,让人望而生畏。

上智不教即知,下愚虽教无益,中庸之人,不教不知。

人的天性中就有一点对未知的恐惧。

刚开始不了解,也没认真看,发现好难呀;等,静下心来自己研究,再看其实不难,发现都是纸老虎,不堪一击。

今天就来分析一下反射:Reflection 

看一下维基百科的解释:

在诸如Java之类的面向对象的程序设计语言中,反射允许在程序运行期间访问 类、接口、字段和方法,而不必在编译期间知道接口、字段或者方法的名称。

反射也允许实例化对象和调用方法。

总结三点:

第一:反射可以获取类、接口、字段和方法的信息。

第二:不止new可以创建对象,反射也可以实例化对象。

第三:通过反射实现对方法的调用。

对于创建对象或者调用方法:正常的步骤是先用new关键词,造一个对象,然后再使用此对象的引用去调用方法,这是正常的套路。

反射就是不按正常套路来,但是殊途同归,本来可以一步到位的东西,他要分几个详细的步骤或者绕个弯走。而他的先获取Class类对象,再去创建对象仿佛就是分步走。

然后通过Class类对象获取Method,然后通过Method的invoke方法调用对象的方法就是在绕个弯。

首先要创建一个Reflection测试类

使用反射创建对象,用new创建对象就没必要再说了。JavaAPI为反射机制提供了一些类包括Class和java.lang.reflect包下的类。

(1)第一种方式:使用Class类的forName静态方法,可以获取一个类对象,然后调用类对象的newInstance方法创建对象。

(2)第二种方式:直接使用类名.class获取类对象,然后调用类对象的newInstance方法创建对象。

使用反射,获取类的public方法,并尝试调用类的方法。

(1)首先通过反射获取类对象,通过类对象的getMethods方法,获取类的所有public方法Method[]。

Method是java.lang.reflect包下的类:提供某个 类、接口 的单一方法信息,提供对方法的访问。这个反射方法可以获取类方法或者实例方法。

循环输出方法名,可以看到,不止test1、3还有equals、hashCode等继承Object的方法。

但是并没有test2,因为他不是public类型的方法。

(2)使用Method的invoke调用方法test1和hashCode

(3)也可以使用getMethod获取Method,不过要注意其参数

第一个参数:方法名

第二个参数:此方法参数的类型集合

使用反射,获取类的public字段,和获取方法类似,也有两个方法,一个是获取所有的public字段,另一个是获取某个public字段

使用反射,获取类和方法的注解。(Retention(RetentionPolicy.RUNTIME),RUNTIME类型的才能获取到)

(1)获取类的注解

(2)获取方法的注解

相关文章

  • MybatisPlus分页失效不起作用的解决

    MybatisPlus分页失效不起作用的解决

    在使用MybatisPlus的selectPage时发现分页不起作用,每次返回的都是全部的数据,本文就来介绍一下MybatisPlus分页失效不起作用的解决,感兴趣的可以了解一下
    2024-03-03
  • Spring中@Scheduled和HttpClient的连环坑

    Spring中@Scheduled和HttpClient的连环坑

    这篇文章主要给大家介绍了关于Spring中@Scheduled和HttpClient的连环坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 详解租约机制以及在hbase中的应用

    详解租约机制以及在hbase中的应用

    这篇文章主要介绍了详解租约机制以及在hbase中的应用的相关资料,需要的朋友可以参考下
    2017-02-02
  • java快速排序和选择排序实现实例解析

    java快速排序和选择排序实现实例解析

    这篇文章主要为大家介绍了java快速排序和选择排序实现实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java集合类的组织结构和继承、实现关系详解

    Java集合类的组织结构和继承、实现关系详解

    这篇文章主要介绍了Java集合类的组织结构和继承、实现关系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java如何给Word文档添加多行文字水印

    Java如何给Word文档添加多行文字水印

    这篇文章主要介绍了Java如何给Word文档添加多行文字水印,文章图文讲解的很清晰,有对于这方面不太懂得同学可以学习下
    2021-02-02
  • springboot?整合canal实现示例解析

    springboot?整合canal实现示例解析

    这篇文章主要为大家介绍了springboot整合canal的示例实现解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多多进步,早日升职加薪
    2022-02-02
  • Java关于List集合去重方案详细介绍

    Java关于List集合去重方案详细介绍

    实际项目开发中,很多业务场景下都会遇见集合去重。在说到List集合去重之前,首先我们回顾下普通类型的list如何去重
    2021-09-09
  • 简单实现Java web服务器

    简单实现Java web服务器

    这篇文章主要为大家详细介绍了简单实现Java web服务器的详细步骤,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Spring中的两种代理JDK和CGLIB的区别浅谈

    Spring中的两种代理JDK和CGLIB的区别浅谈

    本篇文章中主要介绍了Spring中的两种代理JDK和CGLIB的区别浅谈,详解的介绍了JDK和CGLIB的原理和方法,有需要的朋友可以了解一下
    2017-04-04

最新评论

?


http://www.vxiaotou.com