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或访问静态字段/方法才执行

相关推荐
Σdoughty几秒前
python第三次作业
开发语言·前端·python
是萧萧吖几秒前
每日一练——有效的括号
java·开发语言·javascript
MediaTea3 分钟前
Python:内置类型也是类对象
开发语言·python
gpldock2225 分钟前
Flutter App Templates Deconstructed: A 2025 Architectural Review
开发语言·javascript·flutter·wordpress
程序员欣宸6 分钟前
LangChain4j实战之十六:RAG (检索增强生成),Naive RAG
java·人工智能·ai·langchain4j
Ivanqhz7 分钟前
现代异构高性能计算(HPC)集群节点架构
开发语言·人工智能·后端·算法·架构·云计算·边缘计算
qq_3363139320 分钟前
javaweb-Maven
java·maven
Sayuanni%320 分钟前
数据结构_Map和Set
java·数据结构
Demon_Hao21 分钟前
Spring Boot开启虚拟线程ScopedValue上下文传递
java·spring boot·后端
Traced back27 分钟前
# C# 基础语法完全指南
开发语言·c#