反射

要弄清楚反射,先得弄清楚类加载过程和Class类中的内容

类加载过程

  • ClassLoader类有三个具体实现,AppClassLoaderExtClassLoaderBootStrapClassLoader,并且类中有一个parent对象指向父加载器。
  • 当执行类加载过程时,执行loadClass()方***对进行类的字符串进行加锁,并且先判断是否加载过这个类,如果父类不为空,则调用parent.loadClass();加载成功则直接返回Class对象。
  • 当加载失败时会执行findClass()方法(用户来重写,默认直接抛出ClassNotFoundException),在findClass()中调用defineClass(name, b, 0, b.length)来返回一个Class对象,通过类名和byte[]表示类。

Class类中的内容

  • 图片说明
  • 图片说明

反射(ToDo)

  • 用途
    • 创建实例
        Class clazz = Class.forName("全类名");
        // 需要强转一下类型,并且只有clazz有无参构造方法时才能调用该方法
        clazz.newInstance();
    • 调用方法
        Class clazz = Class.forName("全类名");
        // 获取Method
        Method method = clazz.getMethod();
        method.invoke(obj, args);
全部评论

相关推荐

01-21 20:09
武汉大学 Java
点赞 评论 收藏
分享
2025-12-19 15:04
门头沟学院 Java
小肥罗:hr爱上你了,你负责吗哈哈
点赞 评论 收藏
分享
2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务