Java反射机制的精髓讲解

 更新时间:2019年01月09日 11:29:00   作者:李灿辉  
今天小编就为大家分享一篇关于Java反射机制的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

1,什么是反射?

java的反射,允许程序在运行时,创建一个对象,获取一个类的所有相关信息等。

2,Class类

要了解反射,就绕不开Class类。

我们平时开发的类,例如ClassA,一般会有一些属性,会有几个构造方法,也会有一些普通方法,我们还可以使用ClassA来创建对象,例如ClassA classA = new ClassA()

java程序在运行时,其实是很多类的很多个对象之间的协作。jvm如何管理这些类呢?它如何知道各个类的名称,每个类都有哪些属性和哪些方法呢?

jvm会给每个类,创建一个Class类型的对象,来记录各个类的信息,包括类的名称,类有哪些属性,各个属性的类型,类有哪些方法,各个方法的名称参数列表返回值等。我们可以说ClassA是所有ClassA类型的对象的类,同理,我们也可以说,Class是所有Class类型对象的类,而Class类型的对象,也就是其他的所有的类。

3,可以获取类的哪些信息呢?

可以获取类的名称,类的构造函数,类的属性,类的普通方法等。

4,如何使用获取到的类的信息呢?

首先看一下如何使用获取到的类的方法。

jvm提供了Method类,来表示类的方法,我们获取到的一个类的方法,其实就是Method的对象。

Class获取方法的方式为,调用getMethod()方法,第一个参数为方法名称,后面是待获取的方法的参数的类型列表。

而调用获取到的方法时,也比较特殊,是调用Methodinvoke方法,第一个参数为调用哪个对象的该方法,后面是需要给该方法传递的参数列表。

Object obj = MyClass.class.newInstance();
Method method = MyClass.class.getMethod("methodName", String.class, String.class);
method.invoke(obj, "a", "b");

jvm提供了Constructor来表示类的构造方法,提供了Field来表示类的属性,其使用方法与Method的类似。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Mybatis如何开启控制台打印sql语句

    Mybatis如何开启控制台打印sql语句

    在SpringBoot与Mybatis整合开发中,开启控制台SQL语句打印是一个常见需求,有助于调试与性能优化,方法一:在Mybatis配置文件mybatis-config.xml中添加设置;方法二:在SpringBoot配置文件application.yml或properties中
    2024-11-11
  • Java实现的Windows资源管理器实例

    Java实现的Windows资源管理器实例

    这篇文章主要介绍了Java实现的Windows资源管理器,实例分析了基于java实现windows资源管理器的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • springboot使用Mybatis(xml和注解)过程全解析

    springboot使用Mybatis(xml和注解)过程全解析

    这篇文章主要介绍了springboot使用Mybatis(xml和注解)过程全解析 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • java实现数组中的逆序对

    java实现数组中的逆序对

    这篇文章主要为大家详细介绍了java实现数组中的逆序对,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • MyBatis 动态拼接Sql字符串的问题

    MyBatis 动态拼接Sql字符串的问题

    MyBatis的动态SQL,解决了SQL字符串拼接的痛苦。下文分步骤给大家详细介绍了MyBatis 动态拼接Sql字符串的问题,非常不错,感兴趣的朋友一起看下吧
    2016-08-08
  • java虚拟机jvm方法区实例讲解

    java虚拟机jvm方法区实例讲解

    在本篇文章里小编给大家整理的是一篇关于java虚拟机jvm方法区实例讲解内容,有兴趣的朋友们可以学习下。
    2021-02-02
  • 浅析Java常用API(Scanner,Random)匿名对象

    浅析Java常用API(Scanner,Random)匿名对象

    这篇文章主要介绍了Java常用API(Scanner,Random)匿名对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • java多线程实现文件下载

    java多线程实现文件下载

    这篇文章主要为大家详细介绍了java多线程实现文件下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Java 中实现随机无重复数字的方法

    Java 中实现随机无重复数字的方法

    为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复
    2013-03-03
  • MyBatis discriminator标签原理实例解析

    MyBatis discriminator标签原理实例解析

    这篇文章主要为大家介绍了MyBatis discriminator标签实现原理实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论