reflect Java的反射机制是怎样的

技术reflect Java的反射机制是怎样的reflect Java的反射机制是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、类型识别的两种方式

对于reflect Java的反射机制,相信很多没有经验的人都无能为力。因此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。

一、类型识别的两种方式:

首先,“运行时类型识别”(rtti)主要有两种方式。

* * *物种:我们已经知道编译时和运行时的所有类型。

其次,我们在整个项目中编译模块,并在运行时动态编译新添加的模块。(在动态编译模块之前,编译代码的类型是未知的。)这就是要被接受的强大“反射”机制。

二、认识“Class对象”:

要理解Java中RTTI (Runtime Type Recognition)的工作原理,我们必须首先知道类型信息在运行时是如何表达的。这项工作由“类对象”完成,它包含与类相关的信息。

类是程序的重要组成部分(类的属性、方法以及它的一些特性,我在这里就不重复了。),每个类都有一个Class对象。每当编写和编译一个新类时,都会生成一个类对象,该类对象将保存在一个. class文件中,该文件与您创建的新类同名。然后当程序运行时,当我们想要生成这个类的对象(实例化这个类)时,运行这个程序的Java虚拟机(JVM)会这样做:

首先,它将加载。创新类的类文件,

然后确认这个新类的类对象是否已经加载。如果没有,JVM会找到。类文件并加载它。一旦这个类的类对象被加载到内存中,它将被用来创建这个类的所有对象。

一般RTTI表格包括三种类型:

1.传统类型转换。例如,“(苹果)水果”,RTTI保证类型转换的正确性。如果执行了不正确的类型转换,将引发ClassCastException异常。

2.通过类对象获取对象的类型。诸如

[code=' Java ']Class c=Class . for name(" Apple ");

对象o=c . NewInstance();

3.通过关键字instanceof或Class.isInstance()确定对象是否属于特定类型的实例。确切地说,instanceof/Class.isInstance()可用于确定对象是否属于特定类及其所有基类的实例,这不同于equals()/==。它们用于比较两个对象是否属于同一个类的实例,而不考虑继承。

三、反射

如果你不知道一个对象的类型,你可以通过RTTI得到它,但前提是编译时必须知道类型,这样你就可以用RTTI来识别它。也就是说,在编译时,编译器必须知道RTTI处理的所有类。

反射机制可以不受此限制使用,主要应用于两种情况:

* * *案例是“基于组件的编程”,其中将使用一些基于快速应用程序开发(RAD)的应用程序构建工具来构建项目。这是目前最常见的可视化编程方法,通过将代表不同组件的图标拖动到画板上,然后设置“组件”(components)的属性值来配置它们以创建程序。为了实现这种配置编程,有必要要求所有组件都是可实例化的,并公开其部分信息,以便程序员可以读取和设置组件的值和状态。在处理GUI时间工件时,还必须公开相关方法的事件处理细节,这样RAD环境可以帮助程序员覆盖这些处理事件的方法。这里,反射机制用于检查可用的方法并返回方法实体对象。基于组件的编程架构是通过JavaBeans提供的。

在第二种情况下,在运行时获取类信息的另一个动机是提供跨网络在远程平台上创建和运行对象的能力。这被称为远程调用(RMI),它允许一个Java程序在多台机器上步进对象。这种循序渐进的能力将帮助开发人员执行需要大量计算的任务,充分利用计算机资源,提高运行速度。

类支持反射,反射包括java.lang.reflect中的Field/Method/Constructor类,每个类都实现了Member接口。这些类型的对象由JVM在运行时创建,以表示未知类中的相应成员。例如,您可以使用构造函数类创建一个新对象,使用get()和set()方法读取和修改与字段对象关联的字段,并使用invoke()方法调用与方法对象关联的方法。同时,还可以调用getFields()、getMethods()、getConstructors()等方法,返回表示字段、方法和构造函数的对象数组。这样就可以在运行时完全确定未知对象的类信息,在编译时不需要知道任何信息。

此外,RTTI有时还能解决效率问题。当程序中使用多态性时,会给程序的运行带来负担。可以用RTTI写一段代码来提高效率。

看完以上,你掌握了reflect Java的反射机制了吗?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道。感谢阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/44643.html

(0)

相关推荐

  • 什是多音字吗,帮忙找多音字……要多.

    技术什是多音字吗,帮忙找多音字要多.补bu(修补) piao(姓) 乐le(快乐) yue(喜悦) 行hang(行情) xing(行走) 系 xi(关系) ji(系鞋带) 应ying(四声)应用 ying(应该) 长 z

    生活 2021年10月22日
  • Hbase如何使用

    技术Hbase如何使用这篇文章主要介绍了Hbase如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。与mysql 对比:1 创建表 只需要指定faml

    攻略 2021年12月8日
  • IINA有哪些特征

    技术IINA有哪些特征本篇内容介绍了“IINA有哪些特征”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  IINAMac

    攻略 2021年11月12日
  • 手机软件开发费用,开发一个App的费用是多少

    技术手机软件开发费用,开发一个App的费用是多少首先手机软件开发费用,一个App开发的基本要求,至少需要ios和android两个平台,来满足现在主要的手机平台使用用户,ios和android平台其中任意一个的开发价格大

    生活 2021年10月25日
  • Linux WIFI 4G内核怎么配置

    技术Linux WIFI 4G内核怎么配置这篇文章主要介绍“Linux WIFI 4G内核怎么配置”,在日常操作中,相信很多人在Linux WIFI 4G内核怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月30日
  • 基于Ambari的大数据平台搭建是怎样的

    技术基于Ambari的大数据平台搭建是怎样的这篇文章将为大家详细讲解有关基于Ambari的大数据平台搭建是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。同CDH部署

    攻略 2021年12月10日