类加载器加载类使用的是委托机制,比如孙子加载一个类,他先不加载,而是交给父亲去做,父亲也不加载,交给爷爷去加载,爷爷没办法,上面没人了,就只能自己去到自己的目录里去找这个类,如果没找到,再还给父亲,父亲再去到自己的目录去找这个类,如果没找到再还给孙子,这时孙子就得自己去找了,而能这样做是因为有return super.findClass(name);语句,老师自己的类加载器前面已经写好了找指定目录下的类- Class clazz = new MyClassLoader("itcastlib").loadClass("ClassLoaderAttachment");
复制代码 这句话就是在做:创建一个自己的类加载器类在itcastlib目录下,通过loadClass方法传递要调用的类ClassLoaderAttachment.class
在运行的时候在执行到findClass的时候会先按自己写的代码做,而不是去执行return super.findClass(name),当找到的时候就返回了,如果没找到,再丢给父亲,就是委托机制了
后面的那个问题就不知道怎么用了
|