Java反射机制的讲解

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

Java中的反射提供了一种运行期获取对象元信息的手段。即正常方法是通过一个类创建对象,反射方法就是通过一个对象找到一个类的信息。

Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;

其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组成部分。

Java反射的作用:

在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法。对于任意一个对象,可以调用它的任意一个方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。

Java 反射机制主要提供了以下功能

  • 在运行时判断任意一个对象所属的类。
  • 在运行时构造任意一个类的对象。
  • 在运行时判断任意一个类所具有的成员变量和方法。
  • 在运行时调用任意一个对象的方法。

反射的常用类和函数:Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method;

其中class代表的是类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象,通过这四个对象我们可以粗略的看到一个类的各个组成部分。其中最核心的就是Class类,它是实现反射的基础,它包含的方法我们在第一部分已经进行了基本的阐述。应用反射时我们最关心的一般是一个类的构造器、属性和方法,下面我们主要介绍Class类中针对这三个元素的方法:

1、得到构造器的方法

  • Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,
  • Constructor[] getConstructors() -- 获得类的所有公共构造函数
  • Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)
  • Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关)

2、获得字段信息的方法

  • Field getField(String name) -- 获得命名的公共字段
  • Field[] getFields() -- 获得类的所有公共字段
  • Field getDeclaredField(String name) -- 获得类声明的命名的字段
  • Field[] getDeclaredFields() -- 获得类声明的所有字段

3、获得方法信息的方法

  • Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法
  • Method[] getMethods() -- 获得类的所有公共方法
  • Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法
  • Method[] getDeclaredMethods() -- 获得类声明的所有方法

在程序开发中使用反射并结合属性文件,可以达到程序代码与配置文件相分离的目的。如果我们想要得到对象的信息,一般需要“引入需要的‘包.类'的名称——通过new实例化——取得实例化对象”这样的过程。使用反射就可以变成“实例化对象——getClass()方法——得到完整的‘包.类'名称”这样的过程。

总结

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

相关文章

  • Mybatis中and和循环or混用操作(or转换成in)

    Mybatis中and和循环or混用操作(or转换成in)

    这篇文章主要介绍了Mybatis中and和循环or混用操作(or转换成in),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Springboot整合ActiveMQ实现消息队列的过程浅析

    Springboot整合ActiveMQ实现消息队列的过程浅析

    昨天仔细研究了activeMQ消息队列,也遇到了些坑,下面这篇文章主要给大家介绍了关于SpringBoot整合ActiveMQ的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • springboot整合gateway的详细过程

    springboot整合gateway的详细过程

    本文介绍了如何配置和使用Spring Cloud Gateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要的朋友可以参考下
    2025-01-01
  • Java用栈实现综合计算器

    Java用栈实现综合计算器

    栈(stack)又名堆栈,它是一种运算受限的线性表,下面看一下如何在Java中,利用数组实现模拟一个栈,感兴趣的朋友跟随小编一起看看吧
    2022-06-06
  • 详解SpringBoot配置devtools实现热部署

    详解SpringBoot配置devtools实现热部署

    本篇文章主要介绍了详解SpringBoot配置devtools实现热部署 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • springboot集成RestTemplate及常见的用法说明

    springboot集成RestTemplate及常见的用法说明

    这篇文章主要介绍了springboot集成RestTemplate及常见的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java判断文件或者文件夹是否存在的功能(不存在创建,存在删除)

    Java判断文件或者文件夹是否存在的功能(不存在创建,存在删除)

    在Java中,要判断文件或文件夹是否存在,并根据判断结果来执行创建或删除操作,你可以使用java.io.File类或者java.nio.file包中的类,本文介绍Java判断文件或者文件夹是否存在,不存在创建,存在删除,感兴趣的朋友一起看看吧
    2025-03-03
  • 详解SpringBoot静态方法获取bean的三种方式

    详解SpringBoot静态方法获取bean的三种方式

    本文主要介绍了详解SpringBoot静态方法获取bean的三种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • SpringBoot如何整合mybatis-generator-maven-plugin 1.4.0

    SpringBoot如何整合mybatis-generator-maven-plugin 1.4.0

    这篇文章主要介绍了SpringBoot整合mybatis-generator-maven-plugin 1.4.0的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-01-01
  • JAVA实现扫描线算法(超详细)

    JAVA实现扫描线算法(超详细)

    扫描线算法就是从Ymin开始扫描,然后构建出NET,之后根据NET建立AET。接下来本文通过代码给大家介绍JAVA实现扫描线算法,感兴趣的朋友一起看看吧
    2019-10-10

最新评论