请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于AppClassLoader的findClass()方法

老师您好,在视频中有这样的一句话 “AppClassLoader去调用它自定的findClass方法去到他的ClassPath下面去找找,有没有这个类文件,有的话装载进来返回”

可是在我看AppClassLoader的源码的时候,没有看到它重写了findClass方法,那它又是怎么实现去它所要对应的目录下面去寻找 是否有 要寻找的.class文件呢?

如果直接用ClassLoader下面定义的findClass方法,不就抛出ClassNotFoundException了。

关于这里的疑惑,希望祥仔可以给予解答,非常感谢~

正在回答 回答被采纳积分+3

3回答

翔仔 2020-02-06 00:55:13

同学好,都在ClassLoaders这个类里面呢

private static class AppClassLoader extends BuiltinClassLoader {
    static {
        if (!ClassLoader.registerAsParallelCapable())
            throw new InternalError();
    }

这个写着的呢,同学用idea查找类,输入AppClassLoader就知道拉

1 回复 有任何疑惑可以回复我~
提问者 YogurtJ 2020-02-06 01:09:56

https://img1.sycdn.imooc.com//szimg/5e3af6480801be2316000873.jpg

https://img1.sycdn.imooc.com//szimg/5e3af6480869abe616001094.jpg

老师您看下,是我的IDEA使用方法哪里有问题嘛...没能看到AppClassLoader.java ,只有AppClassLoader.class点进去了之后就是我说的继承自URLClassLoader了,没看到您这里的BuiltinClassLoader

0 回复 有任何疑惑可以回复我~
  • 翔仔 #1
    晕了,这几天熬夜太多给熬混乱了,看错地方了。。是URLClassLoader
    http://www.docjar.com/html/api/sun/misc/Launcher.java.html
    同学可以看看,它调用了URLClassLoader的findClass方法,然后给它传入了要搜索的路径,可以全文查看一下"java.class.path"
    回复 有任何疑惑可以回复我~ 2020-02-07 01:32:05
  • 提问者 YogurtJ 回复 翔仔 #2
    感谢~
    回复 有任何疑惑可以回复我~ 2020-02-08 01:06:46
翔仔 2020-02-05 01:56:37

同学好,感兴趣可以看看BuiltinClassLoader的findClass方法,因为AppClassLoader extends BuiltinClassLoader,所以用它的findClass

0 回复 有任何疑惑可以回复我~
  • 提问者 YogurtJ #1
    老师您好,在IDEA里只能看到AppClassLoader继承的URLClassLoader的源码呀。还想请教一下如何查看BuiltinClassLoader的源码,谢谢老师
    回复 有任何疑惑可以回复我~ 2020-02-05 22:01:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信