允许程序在运行时动态地获取类的信息、调用对象的方法、访问或修改对象的字段和创建对象实例
优点:运行时类型判断,动态加载类,代码灵活
缺点:反射通过解释操作,性能低于直接调用,可能绕过访问控制,增加安全风险。
JDBC 驱动加载:Class.forName("com.mysql.jdbc.Driver") 动态加载数据库驱动。
Spring通过XML配置反射装载Bean
XML/Properties 解析:反射将配置文件映射为实体类对象。
工厂模式:根据全限定类名(如 Class.forName)创建对象实例。
原理:JVM 在加载类时,将字节码信息(类元数据)存储在方法区。反射通过 Class 对象访问
都用于加载类字节码到 JVM,生成 Class 对象。
Class.forName默认会执行类中的static块
ClassLoader在newInstance或访问静态字段/方法才执行