zoukankan      html  css  js  c++  java
  • 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、

      

  • 相关阅读:
    windows加固方案
    redis集群
    tar命令
    nfs安装配置
    nginx php版本隐藏
    细谈select函数(C语言)
    linux 下各errno的意义(转)
    iperf交叉编译:
    主机和虚拟机不能ping通问题
    Linux中tcpdump的编译和使用
  • 原文地址:https://www.cnblogs.com/RunForLove/p/4342548.html
Copyright © 2011-2022 走看看