首页 > 其他分享 >反射

反射

时间:2023-06-20 22:35:54浏览次数:36  
标签:反射 构造方法 aclass 对象 获取 Class

1反射定义:
背景:Idea中获取某个类中的所有方法的提示就是利用反射的机制实现的 反射机制定义:
(1)动态获取对象信息(成员变量,成员方法,构造方法)
(2)调用对象的信息(成员变量,成员方法,构造方法) 2反射编程核心思想:
获取class类型的对象(字节码对象)
通过字节码对象获取成员方法,成员变量,构造方法

2通过反射获取自定义类class类型的对象

第一步:准备工作 

先新建一个Demo类,对类中的属性进行封装

第二步:获取Class类型的对象

第一种方式:Class aclass=Class forName(“
Demo类的路径 ”)sout(aclass)
Class forName是查找并加载的意思
第二种方式:Class aclass=Demo.class
第三种方式:Demo demo=new Demo();
                     Class aclass=demo.getClass();

第二步:通过反射获取内置类的class对象     

第一种方式:Class aclass=Class.forName("java.util.Date")       

第二种方式Class aclasss=Thread .getClass 

第三种方式 Date date=new Date()Class aclass =date . getClass();

第三步:反射获取构造方法

先获取Class类型的字节码对象  Class aclass=Class. forName(" ")       

 通过class类型的字节码对象调用getConstructors()

获取构造方法 Constructor[]  co=aclass. getConstructors(); 

现在co就是构造方法,可以遍历获取所有的的构造方法                                                       

for(int i=0;i<co.length;i++){sout (co[i])}

第四步:

反射获取成员变量 先获取Class类型的字节码对象
Class aclass=Class. forName(" ")
利用declaredFields获取成员变量
Fields [] df=aclass.getDeclared0Fields() 利用for循环输出所有成员变量
for(int i=0;i<df.length;i++){sout (df [i])}

也可以单独输出某一个变量: 获取变量名为name的变量
Field ageField=aclass.getDeclaredField("name")
ageField.getName()获取变量名
ageField.getType()获取变量类型

第五步:反射获取成员方法
先获取Class类型的字节码对象
Class aclass=Class. forName(" ")

利用declaredMethods可以获取Class类型的字节码对象的成员方法
Method[]dm=aclass.getDeclaredMethods();
利用for循环遍历成员方法列表

for(int i=0;i<dm.length;i++){sout(dm[i]) }

 

标签:反射,构造方法,aclass,对象,获取,Class
From: https://www.cnblogs.com/liuxin6de1b/p/17495059.html

相关文章

  • Java—枚举Enum中使用反射转换属性值
    关注微信公众号:CodingTechWork,一起学习进步。需求  在开发过程中,有时候需要需要根据各个枚举类中一个字段属性值转为另一个字段属性值,如根据code转为name的需求进行前端展示。本文总结一下如何通过反射简单巧妙的进行枚举属性值的互相映射。实践枚举类packagecom.test.self......
  • EventBus 源码分析 - 注解 + 反射
    EventBus源码解析随着LiveData和KotlinFlow的出现,EventBus已经慢慢过时了。不过EventBus源码的设计思想以及实现原理还是值得我们去学习的。getDefault()方法EventBus().getDefault().register(this)首先EventBus的创建用到了DCL单例模式,源码如下:publicclassEventB......
  • day 33 反射机制,元类,__new__,__call__,元类下的属性查找
    1,内置方法在满足某种条件下自动触发 2、python是动态,强类型的,解释型语言动态:在程序中定义变量时不需要定义变量的类型,在执行时才知道变量的类型;静态:必须定义好变量的类型。只要是动态语言,就必须有反射机制 解释:一句一句的翻译后执行强类型:3:反射实现反射机制的步骤1、......
  • 关于python反射机制中的参数问题处理
    关于python反射机制中的参数问题处理 python的反射机制十分的常用,主要是字符串与模块应用之间的连接方法。核心是将字符串转换成可以调用模块、模块方法的变量。主要包括了以下四个方法:hasattr(obj,name,/)Returnwhethertheobjecthasanattributewi......
  • Java反射机制
    一、Java反射机制是什么?Java 反射机制是Java语言的一个重要特性。在学习Java反射机制前,大家应该先了解编译期和运行期两个概念:编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在Java中也就是把Java代码编成class文件的过程。编译期只是做了一些翻译功能,......
  • c#代码的执行过程及反射的应用
    1.反射是什么?是微软提高的一个类包,访问dll里面的metadata,IL2.为什么要用反射?程序可配置和可以突破方法的权限限制3.反射调用方法?反射创建对象?Assemblyassembly=Assembly.LoadFrom("xxx.dll");//dll名称(需要后缀)Typetype=assembly.GetType("aaa.ReflectionTest");object......
  • 【光学】基于matlab模拟光纤布拉格光栅FBG反射谱和透射谱仿真
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • VMIC5565反射内存卡供应厂家 PCI-5565多模光钎网络 GE反射内存模块 VMIC反射内存PMC系
    反射内存实时网的特点VMIC反射内存是一种通过局域网在互连的计算机间提供的数据传输的技术,强实时网络设计人员已经越来越多地采用这种技术。VMIC反射内存实时局域网的概念十分简单,就是设计一种网络内存板,在分布系统中实现内存至内存的通信,并且没有软件开销。每台结点机上插一块反射......
  • 学习Spring必学的Java基础知识----反射
    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。):[1]Java反射知识-->SpringIoC[2]属性编辑器,即PropertyEditor......
  • 反射
    代码执行流程在讲反射之前,我们先来看下我们写的代码究竟是如何被计算机执行的,这里给大家画了个图,如下所示执行过程VS编译器会将编写好的代码进行编译,编译后会生成exe/dll文件,.NetCore里面已经不生成exe了,都是dll。dll和exe还需要CLR/JIT的即时编译成字节码,才能最终被计算机......