java面试-0141-java反射?优缺点?场景?原理?Class.forName和ClassLoader区别?

允许程序在运行时动态地获取类的信息、调用对象的方法、访问或修改对象的字段和创建对象实例

优点:运行时类型判断,动态加载类,代码灵活

缺点:反射通过解释操作,性能低于直接调用,可能绕过访问控制,增加安全风险。

JDBC 驱动加载:Class.forName("com.mysql.jdbc.Driver") 动态加载数据库驱动。

Spring通过XML配置反射装载Bean

XML/Properties 解析:反射将配置文件映射为实体类对象。

工厂模式:根据全限定类名(如 Class.forName)创建对象实例。

原理:JVM 在加载类时,将字节码信息(类元数据)存储在方法区。反射通过 Class 对象访问

都用于加载类字节码到 JVM,生成 Class 对象。

Class.forName默认会执行类中的static块

ClassLoader在newInstance或访问静态字段/方法才执行

相关推荐
tgethe3 分钟前
Lambda表达式
java·后端
__万波__3 分钟前
二十三种设计模式(一)--单例模式
java·单例模式·设计模式
8***29314 分钟前
Go环境搭建(vscode调试)
开发语言·vscode·golang
songgz11 分钟前
双向流式 JSON 解析架构:并行优化大型文件处理
java·开发语言·json
adfass14 分钟前
桌面挂件时钟/多功能时钟C++
开发语言·c++·算法
Rust语言中文社区20 分钟前
【Rust日报】 walrus:分布式消息流平台,比 Kafka 快
开发语言·分布式·后端·rust·kafka
6***092622 分钟前
Spring 中集成Hibernate
java·spring·hibernate
z***026024 分钟前
Spring Boot管理用户数据
java·spring boot·后端
多多*25 分钟前
Threadlocal深度解析 为什么key是弱引用 value是强引用
java·开发语言·网络·jvm·网络协议·tcp/ip·mybatis
Python×CATIA工业智造26 分钟前
Python多进程爬虫实战:豆瓣读书数据采集与法律合规指南
开发语言·爬虫·python