问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

java的反射技术有什么用?

提问网友 发布时间:2022-04-23 04:07
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2022-04-07 20:34

一、反射的概述

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.


以上的总结就是什么是反射
反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)
如图是类的正常加载过程:反射的原理在与class对象。
熟悉一下加载的时候:Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

二、Java中为什么需要反射?反射要解决什么问题?

Java中编译类型有两种:

    静态编译:在编译时确定类型,绑定对象即通过。

    动态编译:运行时确定类型,绑定对象。动态编译最大限度地发挥了Java的灵活性,体现了多态的应用,可以减低类之间的耦合性。

    Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public、static等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。

    Reflection可以在运行时加载、探知、使用编译期间完全未知的classes。即Java程序可以加载一个运行时才得知名称的class,获取其完整构造,并生成其对象实体、或对其fields设值、或唤起其methods。

    反射(reflection)允许静态语言在运行时(runtime)检查、修改程序的结构与行为。
    在静态语言中,使用一个变量时,必须知道它的类型。在Java中,变量的类型信息在编译时都保存到了class文件中,这样在运行时才能保证准确无误;换句话说,程序在运行时的行为都是固定的。如果想在运行时改变,就需要反射这东西了。

    实现Java反射机制的类都位于java.lang.reflect包中:

    Class类:代表一个类

    Field类:代表类的成员变量(类的属性)

    Method类:代表类的方法

    Constructor类:代表类的构造方法

    Array类:提供了动态创建数组,以及访问数组的元素的静态方法

    一句话概括就是使用反射可以赋予jvm动态编译的能力,否则类的元数据信息只能用静态编译的方式实现,例如热加载,Tomcat的classloader等等都没法支持。

    三、使用

    1、获取Class对象的三种方式

    1.1 Object ——> getClass();
    1.2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性
    1.3 通过Class类的静态方法:forName(String  className)(常用)

    请点击输入图片描述

    希望对您有所帮助!~

热心网友 回答时间:2022-04-07 21:52

java的反射技术用途很多,很多Java框架都是以反射技术为基础的,具体用途有:

通过反射调用Main方法

使用反射的参数调用方法

使用反射按名称调用方法

使用反射按参数类型调用方法

使用反射创建新实例

使用反射指定的参数在调用对象上调用方法。

等等比较多,具体用法可以查看Java反射和调用实例

热心网友 回答时间:2022-04-07 23:27
java的反射技术,可以帮助我们在程序运行时获取类的一切信息,包含方法,成员变量,注解...等等,一切在类中有的都可以,反射主要用在框架底层中,框架在编写的时候不能确定使用者到底会书写什么类和方法,可以通过反射技术获取使用者书写的类的信息,从而调用其中逻辑,让框架具有更强的通用型和解耦功能.没事可以去黑马程序员官网视频库看免费视频。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

相关推荐
  • 反射有什么作用 java反射机制有什么用

    反射有什么作用 java反射机制有什么用

    Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射 特别适用于创建以非常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。Java 的这一特性非常强大,并且是其它一些常用语言,如 C、C++、Fortran 或者 Pascal 等都不具备的。
    查看详情
  • java反射机制有什么用

    java反射机制有什么用

    Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射 特别适用于创建以非常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。Java 的这一特性非常强大,并且是其它一些常用语言,如 C、C++、Fortran 或者 Pascal 等都不具备的。
    查看详情
能说一下java的反射机制吗 java的反射机制到底是什么意思 如何理解Java反射机制 java中反射原理,和应用 Java的反射机制是什么,如何实现 java的反射是基于怎样的原理 java反射机制的实现原理 vivo智能手机下载软件怎么打不开? 为什么VIVOy27手机新下载的软件安装后都显示停止运行,重启也不行,怎么办? vivo下载的软件打不开,还显示让通知vivo是怎么回事呀? vivo手机为什么突然打不开应用了。 vivo软件打不开怎么办 vivoY85下载软件打不开白屏? vivo智能手机下载东西软件怎么打不开? 手vivo突然很多软件 无响应打不开 vivo手机软件下载下来却打不开 为什么vivo的很多软件暂停打不开 为什么vivo手机下载的软件打不开? vivo软件找不到,无法打开,显示已经成功安装,请到设置中确认? - 信息提示 Java中的反射机制的原理和用途是什么? Java中的反射机制是什么 我看的秘密糊糊,看不懂 Java Reflection (JAVA反射)机制详解 java中的反射机制是什么?有什么作用呢?求解,谢谢。 什么是JAVA的反射机制?有什么作用? 为什么使用java反射 linux系统下怎么连wifi? 如何在linux上接收wifi图象 linux系统怎么连wifi 如何在Linux系统下开启无线网络? 请问在WPS的表格中,如何给一排函数的结果求和? VM下的linux如何用wifi无线上网 EXCEL或WPS如何将数据分类求和统计? 物理机linux如何连接有线网和无线网? 虎牙直播首充初体验挂件在哪 Linux下如何通过命令行连接wifi 虎牙五级牌子七天初体验是只有七天吗? WPS表格函数,筛选后按类别自动求和,不包含隐藏? 请问为什么linux系统里面不能使用wifi呢? linux系统能使用wifi吗
Top