通俗易懂,但是没有讲内部的实现原理: http://www.cnblogs.com/yejg1212/p/3270152.html
对ClassLoader的理解:
java是面向对象语言,面向对象的语言的宗旨就是万事万物皆对象,那么类也是一个对象,类里面的属性和方法也是对象。java里面的所有的类都是Class类的对象,这个this.class是获得这个类相对于Class类的对象。后面的方法是获得这个类对象的加载器。只有Class类才有getClassLoader()方法。 可以这么想,我们平时讲述某某类,但是我们并没有说这个类怎么和虚拟机打交道,虚拟机怎么识别这个类,总不能全靠字符串吧,所以呢java就设计了Class这个类用于虚拟机对类的管理。当一个类被虚拟机装载完毕的时候,就会创建一个Class类的实例,对于类A就是A.class,对于类B就是B.class. Class类也提供了许多方法来获取类的信息. 要知道,类的装载器分为 “启动类装载器 “, “用户定义装载器 “.它不止一种 Class类需要保存这些信息. getClassLoader()是用来获取类的装载器。