爱问知识人 爱问教育 医院库

什么是java类加载机制?

首页

什么是java类加载机制?

什么是java类加载机制?

提交回答

全部答案

    2018-03-27 05:05:33
  •   java的类加载器ClassLoader实际上也是由java语言编写而成,那么我们编译类既然要使用类加载器,那什么东西可以编译类加载器的类呢?有点类似与先有蛋还是先有鸡的问题,实际上jvm给我们提供了一个最基础的类加载器,就是BootStrap(判断一个类是不是它加载只要看返回是不是空如String。
      Class。getClassLoader()==null就说明是它加载的) 除了BootStrap不是以外,其他所有的类加载器都继承于ClassLoader这个类 然后,我们有关系 BootStrap ExtClassLoader主要解析jdk里面ext文件夹下面的类 AppClassLoader解析用户写的代码里面用户自定义的类 otherClassLoader 这个是级别关系,和类无关,就是说这里面的几个加载器关系不是类的父子关系!!!!!!!只是说例如AppClassLoader里面声明了一个对象,他指向 ExtClassLoader,是对象之间的引用关系所以AppClassLoader。
      getParent方法返回的是上级类加载器 ExtClassLoader,但是,从类文件的观念看,他们不是继承关系,只能看做引用关系 在加载的时候,如果在我这一层,首先会去找父亲,看看他加载了没,父亲再找父亲的父亲加载了没, 没有才一步步下来,最后由我自己加载,这里讲父亲,不是父类!,有点子债父还的意思 好处是安全,因为classLoader也是个类,所以如果不用这个机制,想解析一个很简单的类,写病毒的人可以自己写个classLoader用来解析这些本来系统自带的ClassLoader就可以解析的类在里面加点病毒代码,这样解析一些简单的类的时候,它会去找加载器,找到了我自己写的病毒Classloader,如果加载的话就出事了,java这个体系,它即使找到了病毒Classloader,也不会立刻使用,它会往上找如果他的长辈(系统自带的能解析这个类的ClassLoader)能加载,就由系统解决了,就用不上这个病毒ClassLoader类了,所以说,比较安全!。
      

    爱***

    2018-03-27 05:05:33

  • 系统软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):