[Java]类加载与反射

详解 Java 类加载与反射(笔记) Java 类加载机制 Java 内存分析 jvm把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成jvm可以直接使用的java类型的过程。 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。 链接:将java类的二进制代码合并到jvm的运行状态之中的过程,链接过程又分为3个过程: (1)、验证:确保加载的类信息符合jvm规范,没有 阅读详情
前言
今天呢介绍下类加载与反射,下面会说一下方面的内容,类的加载连接初始化,以及反射相关的内容.
内容

总括

在这里插入图片描述
关于类加载这部分.在平时的做项目的过程中是基本上不会涉及到的,但是其中的原理却是清楚的知道的.根据书上的讲解以及自己的总结,大致总括如图,希望有助于大家的理解.

类的初始化

简而言之,什么是类的初始化,就是在类第一次使用的时候进行的准备以及预加载

使用场景

1.创建类实例
2.调用静态方法
3.访问静态属性,赋值静态属性
4.final修饰的静态属性
5.直接使用java.exe
6.子类初始化,父类也必须初始化

步骤

1.加载
2.连接
3.初始化静态方法
在这里插入图片描述

类加载

三种机制

1.全盘负责。所谓全盘负责,就是当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其它Class也将由该类加载器负责载入,除非显式使用了另一个类加载器来载入。
2.父类委托。先让parent(父)类加载器试图加载该Class,只哟偶在父类加载器无法加载该类时才常识从自己的类路径中加载该类
3.缓存机制。缓存机制将会保证所有加载过的Class都会被缓存,当程序需要使用某个Class时,类加载器先从缓冲区搜索该CLass,只有当缓存区中不存在该Class对象,系统才会读取带类对应的二进制数据,并将其转换成Class对象,存入缓冲区。(这就是为什么修改Class后,必须重新启动JVM,程序所做的修改才会生效的原因

classloader自定义类加载

一、 方法

1.使用loadclass 还需要通过findclass来进行检查类是否加载,如果有父类需要使用根加载器
2.使用findclass 不需要其他步骤
3.利用findclass进行重写 会比较方便
总结:使用findclass会避免默认类的加载器的父类委托,缓冲机制两种策略,重写LoadClass逻辑会复杂.

二、 使用场景

1.反编译代码
2.动态加载类
3.加载字节码数据
4.提交代码前自动验证数字签名

URLClassLoader

反射

AOP

小结
感谢您的阅读~~
3D Slicer + MONAI Bundle实战:如何用Wholebrainseg模型快速分割133个脑区(附避坑指南) 本文详细介绍了如何利用MONAI Model Zoo中的Wholebrainseg模型,在3D Slicer环境中高效分割133个脑区。文章重点提供了数据预处理、GPU推理加速及结果精修等实战技巧与避坑指南,旨在帮助医学影像研究者和开发者提升全脑分割的精度与效率。 阅读详情

相关推荐

使用模拟工具Modbus poll 和PLC 通讯

使用模拟工具Modbus poll 和PLC 通讯 简介 Modbus Poll 是一个模拟Modbus 主站的工具。不用在现场调试,在家也能使用,方便快捷的调试验证程序。使用它可以和PLC进行Modbus TCP /RTU 通讯等功能,接下来为大家介绍使用Modbus Poll 和 PLC 进行 Modbus TCP 通讯。 组态PLC PLC作为我们的从站和Modbus Poll 通讯,那我们组态一个PLC。 创建通信DB 创建一个DB块,在数据类型处输入:TCON_IP_V4

weixin_61398412的博客 1万+

反射机制和类加载机制

1.反射的定义 3.反射相关的类 4.Class类代表类的实体,在运行的java应用程序中表示类和接口。java文件被编译后生成.class文件,JVM此时就要去解读.class文件。java.class文件也会被JVM解析为一个对象,这个对象就是java.lang.class。这样当程序在运行时,每个java文件就最终变成了Class类对象的实例。我们通过java的反射机制应用到这个实例,就可以去获取、添加、改变这个类的属性和方法。使得这个类成为一个动态的类。Class对象是反射的基础,一个类对应一

yahid的博客 1057

先进封装技术的一些优缺点探讨

半导体封装技术是半导体制造过程中的关键环节,它不仅保护了芯片免受物理损伤,还提供了电气连接和散热功能。随着技术的发展,出现了多种先进的封装技术,每种技术都有其特定的应用场景和优缺点。

阿拉伯梳子的专栏 2168

Java学习笔记(十三)

Java学习笔记(十三) Junit单元测试 测试分类 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值 白盒测试:需要写代码的,关注程序具体的执行流程 Junit使用(白盒测试) 使用步骤 定义一个测试类 定义测试方法:可以独立运行 给方法加@Test注解 导入junit依赖 结果 红色:失败 绿色:成功 一般我们会使用断言操作处理结果 Assert.assertEquals(期望的结果,实际的结果); @Test public void testAdd(){ //创

qq_45184360的博客 259

雷电模拟器+Python 3.11:手把手教你用Frida-dexdump给安卓APK脱壳(附GDA查壳)

本文详细介绍了如何使用雷电模拟器和Python 3.11配合Frida-dexdump工具进行安卓APK脱壳的全流程。从环境配置、工具安装到脱壳操作和问题排查,提供了包含30+关键截图的保姆级教程,适合零基础用户快速上手。重点讲解了Frida工具链的使用技巧和GDA查壳方法,帮助读者掌握移动应用安全分析的基础技能。

weixin_42568801的博客 326

实测有效!YOLOv8融合EMA注意力机制后,在无人机航拍目标检测中的性能提升对比

本文详细介绍了YOLOv8融合EMA注意力机制在无人机航拍目标检测中的性能提升效果。通过多尺度特征融合和通道-空间双重注意力机制,EMA模块显著提升了小目标检测的准确率,mAP@0.5平均提升4.2%,同时保持推理速度基本不变。文章还提供了模型定制、训练技巧和实际部署优化的全流程指南。

weixin_33704234的博客 391

类加载和反射

类加载过程和机制的讲解和反射的使用

学习记录和总结 2万+

手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

getusushu的博客 465

java之反射及类的加载

一、类的加载:1、定义 2、类加载器分类 二、反射:1、定义 2、反射机制的相关API 3、反射的运用:

SO_zxn的博客 526

【win10】win 10 电脑喇叭音频显示红叉的处理方法

目录 一、报错情况 二、“音频服务未运行”解决方法 三、“未插入扬声器或耳机”解决方法 一、报错情况 (1)当电脑的扬声器喇叭图标上带有红X符号,提示“音频服务未运行”时: (2)小喇叭上面有红叉,显示“未插入扬声器或耳机”时: 二、“音频服务未运行”解决方法 (1)开始菜单搜索“服务”: (2)没有启动的点击“启动”,已启动的点击“重新启动”: (3)继续,右...

顾三殇 —— 博客空间(软件测试) 17万+

【数据集】2019年中国1km格网河网密度数据集

中国1km格网河网密度数据集

WW、forever的博客 1342

反射与类加载器

反射: 所谓的反射就是指,在java程序运行时,获得某些对象的实际结构与类型的过程。 创建对象的方式: 用new调用构造方法创建对象 用newInstance()按照类型创建对象 用Class.formName()根据类名创建对象(类型必须在jar包中,不然创建不了) 类加载器: ClassLoader:在JVM启动的过程中,把类模板加载到内存中的工具。就是将一个存在与系统文件中的.class文件,加载到当前JVM的内存中,变成java能识别的Class类型。 启动项加载器:由C语言完成的,当JV

qq_43234235的博客 485

20、Citrix 云桌面常见VDA注册问题汇总

本文总结了与 VDA 中出现的 VDA 会话断开连接、注册、会话卡住以及挂起/崩溃相关的主要支持文章。

我在Citrix、VMware、Veeam、微软和NVIDIA等领域拥有丰富经验的专业人士,专注于设计和维护虚拟化基础设施、实施备份与灾难恢复策略,致力于优化企业的IT环境。 942

JAVA反射与类加载机制

JAVA反射与类加载机制JAVA反射动态语言反射机制反射的应用场合JAVA反射API反射使用步骤获取Class对象通过反射创建对象JVM类加载机制类加载的声明周期类加载器双亲委派模型 JAVA反射 动态语言 动态语言:程序在运行时可以改变结构,新的函数可以引进,已有的函数可以被删除等结构上的变化。 从反射角度说JAVA属于半动态语言。 反射机制 java反射机制:在运行状态下,对任意一个类都...

lym3lavender的博客 3702

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

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java的类加载、反射

类加载、反射

linwq8的博客 1381

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java类加载器与反射机制

文章目录1.类加载器1.1类加载1.2类加载器1.2.1类加载器的作用1.2.2JVM的类加载机制2.反射2.1反射的概述2.2获取Class类对象的三种方式2.3反射获取构造方法并使用2.4反射获取构造方法2.5反射获取构造方法2.6反射获取成员变量并使用2.7反射获取成员变量并使用练习2.8反射获取成员方法并使用【应用】2.9反射获取成员方法并使用练习2.10反射的案例 1.类加载器 1.1类加载 类加载的描述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初

逐梦er的博客 2167

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

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

Java类加载与反射

Java类加载与反射 类加载、连接、初始化 JVM和类 当运行某个Java程序时,将会启动一个Java虚拟机进程,不管Java程序里面多么复杂,都处于该Java虚拟机进程里面。 当Java程序运行结束,JVM进程结束,该进程在内存中的状态将丢失 public class A { // 定义该类的类变量 public static int a = 6; } 接下来...

Coder_py的博客 322

【Java基础】反射;Java类加载以及反射

十、反射 类加载 当程序要使用某个类时,如果该类还没有被加载到内存中时,该系统会通过类的加载、类的连接、类的初始化三个步骤来对类进行初始化。如果没有出现意外,JVM会连续完成这三个步骤,所以有时也将这三个步骤统称为类加载或类初始化。 类的加载 类加载就是将class文件读入内存,并为之创建一个java.lang.Class的对象 任何类被使用时,系统都会为之建立一个Java.lang.Class对象 类的连接 验证阶段:用于检验被加载的类是否具有正确的内部结构,和其他类是否协调一致 准备阶段:负责为类

雨下一整晚real的博客 328

java的类加载与反射

如果当前类加载器无法加载,则向下委托给子类加载器,此时子类加载器才 会尝试加载,成功则返回,失败则继续往下委托,如果所有的加载器都无法加载 该类,则会抛出ClassNotFoundException,这就是双亲委托机制。如果一个类加载器收到类加载请求,它并不会自己先去加载,而是把这个请求 委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向 上委托,最终加载请求会到达顶层的启动类加载器 Bootstrap ClassLoader。垃圾回收器负责自动回收不再使用的对象和释放内存空间。

2202_75439040的博客 713

Java反射与类加载机制

前面在学习Xposed Hook的时候经常会用到反射与类加载器,这次就学习下Java中的反射与类加载机制。 1. Java反射 我们知道Java中的对象有编译类型和运行类型(例如多态),举个例子: Object obj = new java.util.Date(); 编译类型为Object,运行类型(即obj对象真实的类型)其实为java.util.Date,那么如果想要根据obj对象调用Date类中的一个方法例如toLocaleString,应该怎么做?我们首先想到的可能就是多态中常见的使用方法-强.

iris的博客 534

Java类加载器与反射

一个命令对应一个进程 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,不管这个进程有多么复杂。而不同的JVM进程之间是不会相互影响的。这也就是为什么说,Java程序只有一个入口——main方法,让虚拟机调用。而两个mian方法,对应的是2个JVM进程,启动的是两个不同的类加载器,操作的实际上是不同的类。故而不会互相影响。 类加载 当我们使用一个类,如果这个类还未

天行九歌 3300

【JVM】Java 反射原理及类加载过程

Java反射机制摘要 Java反射机制允许程序在运行时动态获取类的内部信息并操作对象属性方法。核心是Class对象,记录了类的元数据。类加载过程分为三步:加载(读取.class文件)、链接(验证、准备、解析)、初始化(执行静态代码)。通过Class对象可获取构造器、字段和方法等元信息,实现动态调用。反射常用于框架开发(如Spring IOC)、动态代理和插件扩展,能突破封装性访问私有成员,但也带来性能开销和安全风险。典型应用包括动态创建对象、方法调用和属性操作,为Java提供了强大的运行时灵活性。

Shad0wLEO的博客 972

java 类加载和 反射

一、Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 2.工作机制 类装载器就是寻找类的字...

一蓑烟雨 341

java类加载器反射

一,什么是类加载器 类加载器器:负责将.class文件(存储的物理文件)加载到内存中 类加载时机: 1,创建类的实例(对象) 2,调用类的方法 3,访问类或者接口的类变量,或者为该类变量赋值 4,使用反射方式来强制创建某个类或接口对应的java.lang.class对象 5,初始化某个类的之类 6,直接使用java.exe命令来运行某个主类 用到就加载,不用不加载 二,类加载器的过程 1,加...

weixin_52376699的博客 272

【Java高级】类加载与反射暴破

本文介绍了动态加载与静态加载的区别,并就类加载过程的五个阶段进行了深入讲解。文章还总结了反射暴破的知识,包括:通过反射创建对象、反射暴破访问私有构造器、反射暴破操作属性、反射暴破操作方法等。

黄小黄的博客 1104

Java中类加载机制与反射

详细介绍Java中类加载机制与反射,包括基本概念、类加载器、反射、JavaBean内省和代理。

行者牛仔 1935
上一篇: 基于比较的排序(一)
下一篇: 多线程-单例模式与多线程
刘佳欢--hannah
博客等级 码龄11年 82粉丝 138原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值