Java基础复习笔记系列 十三 反射机制

主题:Java反射机制

学习资料参考网址:

1.http://www.icoolxue.com

1、Java反射机制。

  各种框架中都使用到了Java的反射机制。

  两个类:java.lang.Class;java.lang.ClassLoader.

2、ClassLoader类。

  ClassLoader并非加载一次,是动态加载。需要的时候才加载。static语句块只执行一次。ClassLoader负责把类load到内存。

  当我们执行Java程序的时候,首先执行JVM,然后再把java class加载到JVM里运行,负责加载java class的这部分叫做class loader。JVM本身包含一个class loader,即bootstrap class loader。bootstrap class loader是用本地代码实现的,它负责加载核心的java class,另外JVM还提供两个由Java写的class loader,即extension class lodaer和application class loader。它们两个都由bootstrap class loader来加载。其中Extension class loader负责加载扩展的java class(如javax.*开头和JRE/ext目录下的类);application class loader负责加载应用程序自身的类。

3、JDK中常见的几个ClassLoader。(认识他们)

  bootstrap class loader,最核心的class Loader。其他的class loader都是由bootstrap class loader来loader进来的。当在控制台往出打印的时候,显示null。它是用C++编写的,从jre/lib中加载类。

  extension class loader。

  application class loader。我们自己定义的类,是由application class loader来loader进来的。

  URLclassloader。网上的一些类,由它来loader。它是SecureClassLoader的之类。

  classLoader的层次关系(不是继承关系,是层次关系;没有继承关系):bootstrap --> extension -->application(在application class loader中有一个引用,指向了extension class loader).所以,application.getParent--->指向了extension class lodaer.

  类加载的时候,追根溯源。找到最parent的class loader来加载。避免了病毒问题。”有什么事,先问他爸爸!”也就是说:一个class loader要加载一个类的时候,首先要查找其父加载器是否加载了,如果找不到,才由自己加载,这个过程一直往上递归处理。

4、程序运行中,class loader的运用。

  当一个程序启动的时候,JVM也随着启动,运行bootstrap class loader。该类加载器负责加载Java核心API(Extclasslodaer和Appclassloader),然后调用Extclassloader加载扩展API,最后Appclassloader加载CLASSPATH目录下定义的class。这即是一个程序最基本的加载流程。

5、

  

原文地址:https://www.cnblogs.com/RunForLove/p/4342548.html