Java反射机制笔记

Java反射机制笔记(简单易懂) Java反射机制笔记,简单易懂,轻松搞定Java反射机制 立即下载

       今天学习了关于反射的内容知识,根据反射的原理,我们在写完源代码后第一步先保存.java文件,然后编译成.class文件,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,在内存中.class文件的存在形式为Class类,在Java中万物皆对象,所以我们要进行反射的一些操作,就要拿到Class类的对象.

  

在这里我们主要掌握一种:
          Class.forName(String s)   -->s为路径

在java类中,各种内容大致可以分为
                                         属性 --->  Field
                                         无参构造方法  -->Constructor
                                         有参构造方法  -->Constructor
                                         普通方法  -->Method
          而反射针对每一种内容有各自的处理方式

 

 这里涉及到一个面试题:
*               问:如何实现类的实例化?如果不使用new呢?
*               答:两种方法,第一种是直接new来实例,
*               第二种通过反射,拿到Class的对象,再通过Class对象的方法(Object)newInstance() **强制类型转换获取该类的实例


*               注意问题:

                1:在操作私有属性或者私有方法时,一般情况下会拒绝访问,通setAccessible(true)方法实现操作权限
*               2:在操作普通方法时,遇到static方法时,在invoke方法中,可以将第一个参数(Obj)设置为null

 

下面是Java反射机制在操作各种内容的代码:

  •        
     //操作无参构造方法
        public static void getConstructor() throws Exception {
            //获取Class类
            Class c1 = Class.forName("pp.Person");
    
            //得到Person类的实例
            Person person = (Person) c1.newInstance();
            person.setName("haha");
            System.out.println(person.getName());
        }
     //操作带参数的构造方法
        public static void Test2() throws Exception {
            Class c2 = Class.forName("pp.Person");
    
            Constructor constructor = c2.getConstructor(String.class, String.class);
    
            Person person = (Person) constructor.newInstance("wangwei", "100");
    
            System.out.println(person.getName()+person.getId());
        }
    
        //操作属性
        public static void Test3() throws Exception{
            //获取Class类
            Class c3 = Class.forName("pp.Person");
            //实例化
            Person person  = (Person) c3.newInstance();
            //获取属性name
            Field field = c3.getDeclaredField("name");
            //将private属性设置为可操作的
            field.setAccessible(true);
            //相当于person.setName
            field.set(person,"nihao");
    
            //相当于person.getName
            System.out.println(field.get(person));
        }
    
        //操作普通方法
        public static void Test4() throws Exception{
            Class c4 = Class.forName("pp.Person");
            //实例化
            Person person = (Person)c4.newInstance();
            //获取方法
            Method method = c4.getDeclaredMethod("setName",String.class);
    
    
            //注:如果遇到该方法为静态方法即:static修饰时,invoke中第一个参数可以设置为null
            method.invoke(null,"lina");
    
            System.out.println(person.getName());
    
        }

    最后

  • 希望各位在看到博客时遇到问题可以提出来,帮助我进步,谢谢大家!

 

 

JAVA 私塾笔记整理——反射机制(Reflection) 轻松掌握java反射技术,虽然讲得比较简单,但是通俗易懂。 立即下载

相关推荐

用C++手把手教你连接SimNow期货模拟盘:从CTP API封装到第一个订单(附完整代码)

本文详细介绍了如何使用C++连接SimNow期货模拟盘,从CTP API的基础架构解析到实现第一个订单的完整流程。内容涵盖CTP API的封装、SimNow环境配置、交易通道实现、行情接收与处理等核心环节,并提供完整代码示例,帮助开发者快速掌握量化交易中的期货模拟盘连接技术。

weixin_27215337的博客 330

JAVA笔记—反射机制(Reflection)

对于自定义类,使用系统类加载器进行加载。对于调用系统类加载器,使用扩展类加载器,引导类加载器主要负责加载java的核心类库,无法加载自定义类。

maohe的博客 322

告别手册!S32K3XX的eMIOS实战:从GPT定时到PWM输出,一个通道搞定电机控制

本文深入探讨了NXP S32K3XX系列MCU的eMIOS模块在电机控制中的高效应用。通过单通道实现PWM生成、输入捕获和定时中断三大功能,展示了如何简化BLDC电机控制硬件设计。文章结合RTD库与寄存器级编程,提供动态模式切换和性能优化方案,显著降低CPU负载。

weixin_42522374的博客 147

java 反射机制笔记

使用反射操作类的成员的前提条件是:要获得该类的字节码文件对象,就是Class对象。Class对象获取的方式 Class类常用方法 反射之构造方法 /** * 反射之构造方法 * ConStructor类的概述: * 作用:获得到ConStructor对象来创建类的对象 * 可以通过反射获取类的构造方法 * 可以通过反射执行类的构造方法 * 【可以通过反射获取类的构造方法】 * Class对象中,与Constructor有关的方法 * Constructor

qq_42572322的博客 211

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 457

python气象数据可视化学习笔记8——利用matplotlib和ERA5数据绘制时间-高度气象综合廓线图

利用matplotlib和ERA5数据绘制时间-高度气象综合廓线图

qiuylulu的博客 8067

java学习笔记15——反射机制

2、声明榨汁机(Juicer),包含运行方法:public void run(Fruit f),方法体中,调用f的榨汁方法squeeze()4.(了解)反射的应用4:通过反射获取注解的信息(见com.atguigu04.other.annotation包的测试)> 因为反射体现了动态性(可以在运行时动态的获取对象所属的类,动态的调用相关的方法),所以我们在设计框架的时候,> 从我们作为程序员开发者的角度来讲,我们开发中主要是完成业务代码,对于相关的对象、方法的调用都是确定的。

qq_58956810的博客 754

DCM4CHEE Archive Light 应用配置-存储配置

本文介绍了在DICOM归档系统中配置和管理存储的方法,包括通过用户界面和LDAP导入两种方式。主要内容包括: 存储配置概述:用户可根据需求配置单个或多个存储设备,支持在磁盘空间不足或多任务并行时使用。存储分为Archive设备级(序列元数据存储)和Application Entity级(对象存储/元数据存储)。 用户界面操作: 设备级存储配置:通过菜单导航添加/编辑存储描述符,设置Storage ID、URI等关键参数 应用级存储引用:在设备扩展和网络AE中分别配置元数据和对象存储引用 LDAP配置方法:

洪城叮当的博客 1417

java反射机制个人学习==速成笔记

在java运行状态中,对于任意一个类,都可以知道这个类的所有属性方法,对于任意一个对象,都能运用它的方法和属性,允许程序运行时获取类的信息,创建对象,调用方法和属性。

2401_84040384的博客 748

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

3. LangGraph快速入门

本示例中,我们将使用 Claude Sonnet 4.5 模型,并定义加法、乘法、除法工具。# 定义工具@toolArgs:"""@toolArgs:"""@toolArgs:"""# 为大模型绑定工具图的状态用于存储消息和大模型调用次数。LangGraph 中的状态在整个智能体执行过程中保持持久化。使用带的Annotated类型可以确保新消息追加到现有列表,而不是替换列表。模型节点用于调用大模型,并决定是否调用工具。return {],

Long_像风一样自由 842

关于Java的反射机制的笔记

定义 Java反射机制指的是在Java程序运行状态中,对于任何一个类,都可以获得这个类的所有属性和方法;对于给定的一个对象,都能够调用它的任意一个属性和方法。 Java的反射机制允许编程人员在对类未知的情况下,获取类相关信息的方式变得更加多样灵活,调用类中相应方法,是Java增加其灵活性与动态性的一种机制。 2.原理 反射机制(Reflection)是Java提供的一项较为高级的功能,它提供了一种动态功能,而此功能的体现在于通过反射机制相关的API就可以获取任何Java类的包括属性、方法、构造器、修饰符等.

m0_56042597的博客 159

U盘插入电脑时发出声音但不显示——编程解决方案

以上是一些常见的编程解决方案,帮助您解决U盘插入电脑时发出声音但不显示的问题。请注意,这些解决方案可能因不同的情况而略有不同,因此请根据您的具体情况进行调整和尝试。当您将U盘插入电脑时,如果您听到了连接声音,但是U盘却没有在文件资源管理器或桌面上显示出来,这可能是由于一些常见问题导致的。U盘的文件系统格式可能与您的计算机不兼容,导致无法正确识别。如果输出显示U盘的文件系统格式与您的计算机不兼容,您可以尝试重新格式化U盘或使用其他兼容的文件系统格式。其中,X是U盘的磁盘编号,Y是您想要分配给U盘的盘符。

ByteEchoX的博客 2463

【java笔记】反射机制

概述: 动态语言: 一类在运行时可以改变其结构的语言。例如新的函数,对象,代码都可以被引进;已有的函数可以被删除或是其他结构上的变化。 静态语言: 运行时结构不可变的语言是静态语言。 java不是动态语言,但可以说是准动态语言,即java有一定的动态性,可以利用反射机制获得类似动态语言的特性。 反射机制:Java Reflection。允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性方法 加载完类之后,在堆内存的方法区就产生了一个C

_ 720

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java的反射机制笔记

java的反射机制笔记 首先了解什么是反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python

qq_20302017的博客 236

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【韩顺平】Java反射机制笔记

文章目录1、前言2、一个需求引出反射3、反射机制3.1 Java Reflection3.2 反射机制原理图3.3 反射机制可以完成的功能3.4 反射相关的主要类3.5 反射的优点和缺点3.6 反射调用优化——关闭访问检查4、Class对象4.1 基本介绍4.2 Class类的常用方法4.3 应用实例5、获取Class对象6、哪些类型有Class对象6.1 如下类型有Class对象6.2 应用实例7、类加载7.1 基本说明7.2 类加载时机7.3 类加载过程图7.4 类加载各个阶段完成任务7.5 加载阶段7

保持学习 2542

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java反射机制详细笔记

反射允许对成员变量、成员方法和构造方法的信息进行编程访问。反射机制的核心是Class类,每个Java类在JVM中都有一个对应的Class对象,通过这个对象可以获取类的所有信息。方法名作用返回值类型获取所有public构造方法>[]获取所有构造方法(含private)>[]获取指定的public构造方法获取指定的构造方法(含private)方法名作用返回值类型获取所有public成员变量(含继承)Field[]获取所有成员变量(不含继承)Field[]获取指定的public成员变量。

qq_38955667的博客 881

java 反射机制 视频_【视频笔记】Java反射机制笔记

Java 语言的反射机制在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法。对于任意一个对象,可以调用它的任意一个方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射机制主要提供了以下功能在运行时判断任意一个对象所属的类。在运行时构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调...

weixin_39901404的博客 117

Java中的反射机制笔记

反射(框架设计的灵魂) ​ 框架:半成品软件,可以在框架的基础上进行软件开发,简化编码 ​ 反射:将类的各个组成部分封装为其他对象,这就是反射机制 ​ 好处:1.可以在程序运行过程中操作这些对象 ​ 2.可以理解,提高程序的可扩展性 获取class对象的方式 ​ 1.Class.farName(“全类名”):将字节码文件加载进内存,返回Class对象(多用于配置文件,将类名定义在配置文件中,读取文件加载类) ​ 2.类名.class:通过类名的属性class获取(多用于参数

qq_45252101的博客 100

Java反射机制学习笔记

Java反射机制 class 类的创建方式 通过具体的类创建(这个方式最高效也最安全) Class clazz = Person.class; 通过类的实例创建 Class clazz = person.getClass(); 通过类的全名(有package)创建 Class clazz = Class.forName("com.learn.reflection.Person"); 内置基本数据类型可以直接用类名.TYPE(Integer 等) 可以利用ClassLoader 什么时候

qq_40072516的博客 150

Java 反射机制笔记

类加载器 当程序要使用某个类时,如果该类还未被加载到内存中,则系统通过加载,连接,初始化三步来实现对这个类进行初始化。 加载 就是指将class文件读入内存 ,并为之创建一个Class对象。 任何类被使用时系统都会建立一个class对象 连接: 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静...

三流程序员,三流的技术,一流的态度和真心,期待和你们交流合作🤝🤝🤝。 405
上一篇: 回溯法(排列树)解决八(N)皇后问题
下一篇: JVM面试题+个人理解(参考深入理解JVM一书)1-10
Tony__Java
博客等级 码龄9年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值