JAVA的反射机制

一、反射的三种实现方式
  • 对象.getClass()
  • 类.class
  • Class.forName("传入需要反射的类路径")
二、反射原理

1.Class.forName()方法实际上也是调用的CLassLoader(类加载器)来实现的。内部实际调用的方法是forName0(className, true, ClassLoader.getClassLoader(caller), caller)

  • className:表示我们要加载的类名(这里是类的全路径名)
  • true:指Class被加载后是不是必须被初始化。 不初始化就是不执行static的代码即静态代码,在这里默认为true,也就是默认实现类的初始化。
  • ClassLoader.getClassLoader(caller):表示类加载器,到这你会发现forNanme其实也是使用的ClassLoader类加载器加载的。
  • caller:指定类加载器。

2.classLoader

  • 当调用类时会触发classLoader(JVM类加载器)
  • JVM加载根据name到磁盘中找到对应的.class文件并加载到内存中
  • 当.class对象加载入内存后,JVM会自动创建应该class对象。(一个类只会产生一个class对象,这个遵循了双亲委派模型)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本部分主要介绍:Java 的反射机制的原理及使用 先知知识点 Java 的 接口 (interface)对外提供规...
    sshentree阅读 248评论 0 1
  • 动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如...
    诺天高云淡阅读 366评论 1 0
  • 不论是 Java 开发 还是 Android 开发,反射、泛型、注解 都是架构设计中很重要的一个知识点。 为了更好...
    JamFF阅读 543评论 0 4
  • 1.1 框架的概念 ​ 半成品软件。可以在框架的基础上进行软件开发,简化编码。学习框架并不需要了解反射,但是要...
    AaFaa阅读 274评论 0 0
  • java反射机制与类加载机制 Class (Java SE 9 & JDK 9 ) - https://docs....
    坚果jimbowhy阅读 1,076评论 0 0