为了账号安全,请及时绑定邮箱和手机立即绑定

语句myClassLoader.loadClass(className)中继承自父类方法loadClass内部的奇怪调用

陈述事实:

    教学视频中,MyClassLoade类中loadClass(String name)这个继承自ClassLoader类,该方法内部会调用findClass(String name)方法,而MyClassLoader里已经被覆盖了继承来的findClass(String name)。

描述现象

    在调试时发现,调用myClassLoader.loadClass(className)时,跟踪到父类ClassLoader里loadClass(String name, boolean resolve)中一个语句:c = findClass(name)时,发现调用的竟然不是MyClassLoader的findClass方法,而是URLClassLoader里的findClass方法。

问题:

    请问各位码友,为什么是这样?

上图片:

https://img1.sycdn.imooc.com//5d3529930001fc8719201080.jpg

正在回答

1 回答

URLClassLoader是ClassLoader的一个子类,java加载时逐级上传,当前类加载器无法加载时抛给父级加载器,当父级加载器为null时bootstrapclassloader充当父级加载器启动。这里看应该是先传给了URLClassLoader加载器,调用它的findclass。URLClassloader这个是用来安装指定路径加载资源的一个加载类。classloader只能加载classpath下的类。我猜可能是因为代码中给定了要加载类的路径,所以java先传给了URLClassLoader类加载器。如果这个加载器无法加载还会继续传递给父类classloader

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

语句myClassLoader.loadClass(className)中继承自父类方法loadClass内部的奇怪调用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信