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)

相关推荐

  • 最小的质数和最小的合数是什么,什么是合数?最小的合数是多少

    技术最小的质数和最小的合数是什么,什么是合数?最小的合数是多少合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。最小的合数是4。合数的性质最小的质数和最

    生活 2021年10月19日
  • Java怎么实现教材管理系统

    技术Java怎么实现教材管理系统这篇文章给大家介绍Java怎么实现教材管理系统,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、项目简述功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用

    攻略 2021年11月24日
  • VC++ win7下怎么实现WIFI共享工具

    技术VC++ win7下怎么实现WIFI共享工具这篇文章主要讲解了“ VC++ win7下怎么实现WIFI共享工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ VC++

    攻略 2021年11月30日
  • JMX在Tomcat的应用是怎样的

    技术JMX在Tomcat的应用是怎样的本篇文章给大家分享的是有关JMX在Tomcat的应用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们来详细说

    攻略 2021年12月9日
  • Elasticsearch中如何进行Match查询

    技术Elasticsearch中如何进行Match查询Elasticsearch中如何进行Match查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。如

    攻略 2021年11月16日
  • 1000抖音粉丝99元,抖音刷粉丝有什么好处?

    技术1000抖音粉丝99元,抖音刷粉丝有什么好处?今天我们来聊聊抖音的涨粉的事情,有些朋友说,我看到了一个抖音粉丝非常高的人,但是没有什么作品。
    其实很多人都不知道,抖音平台的粉丝一般都是可以刷的,不过我当然知道是怎么样

    测评 2021年11月11日