类加载器和反射

news2025/1/12 8:42:39

 

 

 1.通过全限定名:包名+类名(类名可能会重复,所以要加包名),然后用流拷贝到内存中,并在内存中创建一个class对象用来存储这个class文件的成员信息

类加载过程icon-default.png?t=M85Bhttp://t.csdn.cn/FDnaa

在验证之前会把该类中引用的其他类,进行符号位进行替代,直到解析步骤才进行查找对应的类

 

 在“解析”步骤之前,其他的类(即引用数据类型)是不会进行访问的,都是用符号位进行替换,当加载到“解析”步骤时,才会找到这个类对应的地址值

 

 

1.底层用C++写的,当虚拟机启动的时候会启动

2.jdk中特殊模块

3.一般都是用来加载我们写的代码

双亲委派模型:类之间的加载关系就称之为 双亲委派模型,究竟什么意思?有啥用?

系统类加载器,会直接委派平台类加载器,平台类加载器会直接委派给启动类加载器,当启动类加载器处理不了会返回给平台类加载器,平台类加载器处理的不了的返回给系统类加载器

 

Ext:Extension 

 

 注意:类加载器中的相对路径是在src下的

如果获取的是平台类加载器或启动类加载器呢?

为何此处用的是properties文件呢?

反射:

 

 

 

 利用 javaBean+properties+反射机制 ,只需要修改配置文件properties,就可以动态的获取对象的信息(成员变量、成员方法、构造方法)

获取Class对象:

 

1.Class文件,即字节码文件用到才加载,不用不加载(用到才会通过类加载器,加载到内存)

2.源代码阶段:存储在本地硬盘当中,还未加载到内存

此时,可以调用Class的静态方法forName(String className)注意是全类名。将字节码文件加载到内存,从而获取到Class对象

3.Class对象阶段:注意这是当class文件已经加载到内存了的情况下

可以使用类名.class直接调用,从而获取到Class对象

4.Runtime运行时阶段:当我们自己手动new了一个对象,(当new了一个对象就会触发类加载器,将字节码文件加载到内存,具体可以参考上面的:类加载时机)

可以使用对象.getClass(),从而获取到Class对象

右键Java Bean类点击Copy Reference可以拷贝全类名

泛型可以不要

一个类的class文件是唯一的

在java中什么都可以看作一个对象 ,而只要是对象,就能用一个类去描述它们

 

Field可以看作成员变量对象,每一个成员变量为一个对象

Constructor可以看作构造方法对象,每一个构造方法为一个对象

Method可以看作成员方法对象 ,每一个成员方法为一个对象

获取Constructor对象:

 

 

 

利用Constructor对象获取Student对象:

 

重点!!!流程:

1.获取class文件(Class.forName(String s)这个方法比较常用比较灵活)
2.获取Constructor对象
3.用Constructor对象来创建Student对象

 

 反射获取成员变量并返回值:

 

流程:

1.获取class文件

2.获取file对象

3.赋值或获取值

获取file对象:

 

赋值或获取值:

 

参数Object obj 是用来表示 ,需要对哪个学生对象进行赋值或获取值

在操作赋值或获取值之前,必须创建对象,当使用到私有成员变量时,将file.setAccessible(True);即可 

设置值:

 

获取值:

反射获取成员方法并运行:

getMethods()是获取所有公共的成员方法包括父类(接口呢?)

 

 

 getDeclaredMethods()方法获取所有成员方法(公共私有都有),但不包括父类的方法

 getDeclaredMethod(String s)获取公共成员方法

注意:输出内容 pg6前面如果不是void就是有返回值的

 

 getDeclaredMethod(String s,Class<?>... ParameterTypes)获取公共和私有成员方法 

方法运行:

 

不管是成员变量还是成员方法都要先创建对象才能使用

declared是返回所有的私有和公共

方法的getDeclaredMethods是返回本类的私有和公有

getMthods是返回本类和父类所有的公共方法

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CRM的开发

开发步骤1.首页的开发2.由首页跳转到登陆页面3.用户登录4.记住密码实现5.安全退出6.登录验证7.创建市场活动8.分页查询市场活动9.删除市场活动10.修改市场活动11.批量导出市场活动12.导入市场活动13.查看市场活动明细14.添加市场活动备注15.删除市场活动备注16.修改市场活动备注…

分分钟搭建出nginx的https服务

nginx添加https协议一、https是什么&#xff1f;二、创建步骤1.安装nginx2.创建证书三、验证四、浏览器访问在windows安装证书总结nginx 192.168.122.50一、https是什么&#xff1f; HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&…

分布式文件存储系统Minio,tuling,fox,p3 5:27

MinIO | 高性能&#xff0c;对Kubernetes友好的对象存储 一 分布式文件系统应用场景 fastDFS 缺点&#xff1a; 部署麻烦。因为文件名是自动生成的&#xff0c;所以如果要处理文件的话&#xff0c;还要经过额外的编码。Minio介绍 应用场景 互联网海量非结构化数据的存储需求…

Spring常见注解

普通CURD框架结构 1、controller 控制器&#xff08;注入服务&#xff09;用于标注控制层&#xff0c;相当于struts中的action层 2、service 服务&#xff08;注入dao&#xff09;用于标注服务层&#xff0c;主要用来进行业务的逻辑处理 3、repository/Mapper&#xff08;实…

25.前端笔记-CSS-溢出的文字省略号展示

1、单行文本溢出显示省略号 满足条件&#xff1a; &#xff08;1&#xff09;先强制一行内显示文本 white-space:nowrap;/*默认不写&#xff0c;或值是normal自动换行*/) &#xff08;2&#xff09;超出的部分隐藏 overflow:hidden; &#xff08;3&#xff09;文字用省略号代…

ESPnet-SE 开源工具介绍

下面是我们整理的钱彦旻教授、张王优、李晨达在第二届SH语音技术研讨会和第七届Kaldi技术交流会的报告内容&#xff0c;如果有误&#xff0c;欢迎指正。 基本情况 今天我们主要是围绕ESPnet-SE这个工具做一个简单的介绍&#xff0c;我会大概讲一下ESPnet-SE的情况&#xff0c;…

一文了解宏内核和微内核

【推荐阅读】 纯干货&#xff0c;linux内存管理——内存管理架构&#xff08;建议收藏&#xff09; 轻松学会linux下查看内存频率,内核函数,cpu频率 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 需要多久才能看完linux内核源码&#xff1f; 内核是操…

微信小程序第五篇:页面弹出效果及共享元素动画

系列文章传送门&#xff1a; 微信小程序第一篇&#xff1a;自定义组件详解 微信小程序第二篇&#xff1a;七种主流通信方法详解 微信小程序第三篇&#xff1a;获取页面节点信息 微信小程序第四篇&#xff1a;生成图片并保存到手机相册 目录 一、page-caontainer 实现假页弹出 …

LDP协议介绍

LDP介绍 1.LDP协议概述 LDP&#xff08;Label Distribution Protocol&#xff09;规定了标签分发过程中的各种消息以及相关的处理过程。LSR之间将依据本地转发表中对应于一个特定FEC的入标签、下一跳节点、出标签等信息联系在一起&#xff0c;从而形成标签交换路径LSP。 2.L…

【Python恶搞】Python实现祝福单身狗的恶搞项目,快发给你的怨种大兄弟 | 附源码

前言 halo&#xff0c;包子们上午好 咱就说&#xff0c;谁还没有一个单身的小伙伴呢 今天这个代码主要是为了祝福咱们单身的小伙伴 咱就说废话不多说&#xff0c;直接上才艺 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 公众号&#x…

Kali Linux 又更新了!202.4新版本有哪些变化?

Kali Linux在今年最后一个月迎来了新版本&#xff0c;即2022.4&#xff0c;上次更新是在8月份&#xff0c;时隔4个月&#xff0c;Kali linux 又有哪些新变化呢&#xff1f; 更新内容&#xff1a; Microsoft Azure - Kali 已添加到 Microsoft Azure&#xff0c;但目前没有图形…

阿里云效 ssh公钥配置

准备工作 通过 SSH 协议在 Git 命令行访问 Codeup&#xff0c;需要具备以下几点&#xff1a; 本机已安装Git&#xff08;安装教程参见安装Git&#xff09;并保证版本大于1.9&#xff08;通过git --version可获取本地的版本&#xff09;&#xff1b; 本机需要安装OpenSSH客户端…

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测 目录 智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测分类效果基本介绍模型参数程序设计参考资料分类效果 基本介绍 Bee-CNN蜜蜂算法优化卷积神经网络是一种模糊进化深度学习(优化权重和…

银行测试的优势在哪里?

为什么做金融类软件测试举个栗子&#xff0c;银行里的软件测试工程师。横向跟互联网公司里的测试来说&#xff0c;薪资相对稳定&#xff0c;加班少甚至基本没有&#xff0c;业务稳定。实在是测试类岗位中的香饽饽&#xff01;一、什么是金融行业金融业是指经营金融商品的特殊行…

液晶屏显示IC 可调式三通道TFT、LCD DC/DC升压转换器AAT1118 液晶面板双通道电荷泵电源IC AAT1118

液晶屏显示IC 可调式三通道TFT、LCD DC/DC升压转换器AAT1118 TFT LCD液晶面板双通道电荷泵电源IC AAT1118 概述 AAT1118集成了一个升压调节器&#xff0c;两个调节电荷泵&#xff0c;一个关闭功能&#xff0c;和一个开漏电源良好的输出&#xff0c;使其成为TFT液晶面板供电的…

逆行而上 光照前方 | 记“齐鲁之战”11月第一单签约者—郭群策

白玉兰品牌于2018年正式启航&#xff0c;白玉兰也与上海市花同名&#xff0c;作为国内四大名花之一&#xff0c;更具有品牌的标识性。品牌发展至今四年&#xff0c;三年是疫情期&#xff0c;但白玉兰酒店仍然成为目前锦江酒店&#xff08;中国区&#xff09;体系内发展最快的品…

Linux系统中裸机定时器的基本原理

大家好&#xff0c;今天的话主要和大家聊一聊&#xff0c;如何使用定时器&#xff0c;完成精准的定时功能实现​。 目录 第一​&#xff1a;EPIT定时器基本简介 ​第二&#xff1a;EPIT的基本配置 ​第三&#xff1a;代码的具体实现 第一​&#xff1a;EPIT定时器基本简介 ​…

【UE4】引擎配置文件原理学习笔记

刚好遇到一个ini加载的优化。趁此机会记录学习一下UE引擎的config文件层级结构和读取流程 文章目录两个问题层级结构文件读取流程初始化流程文件读取流程文件的写入配置文件内容和GConfig结构两个问题 在看项目目录结构的时候&#xff0c;有没有这样的疑问&#xff1a; 为什么…

喜报!泛睿云国家版权局颁发的软件著作权证书

近日,泛睿云自主研发的泛睿云计算服务平台V1.0,通过中国人民共和国国家版权局权威授权,获得了计算机软件著作权登记证书,这是对泛睿云实力和研发水平的充分肯定。 软件著作权是企业核心自主知识产权,是企业的“无形资产”,是企业科技的生命力和价值所在,国家权威部门的认证将使…