Google资深架构师 2021-04-24 18:34 采纳率: 25%
浏览 26

类加载器(ClassLoader)与当前类是什么关系,什么时候用,怎么用

昨天在手写spring框架的时候出现了个问题,就是由于类加载器使用错误的问题导致代理对象创建失败,所有有了这个疑问。

希望有大神能够给讲一下哈

  • 写回答

2条回答 默认 最新

  • 归去来 兮 优质创作者: Java技术领域 2021-04-25 09:34
    关注

    类加载器(ClassLoader)与当前类是什么关系

    类加载器基于双亲委派模型会划分为:启动类加载器(加载jdk的jar)、扩展类加载器(加载扩展包下的jar)、应用程序类加载器(加载用户编写的class文件)。当你不手动指定类加载器时,默认都是使用应用程序类加载器,来加载我们的类。当前类与类加载器之间的关系,就是加载与被加载的关系,应用程序将类加载到内存中,供使用,具体参考上面的回答。

    类加载器什么时候用呢?

    java类的声明周期是这样的java文件经过编译器编译变成class文件---->class文件被类加载器加载到jvm中------>验证class文件是否有效------->做准备工作------>解析阶段------->初始化类信息------->使用类信息------->卸载类信息。这是整个java文件的声明周期,类加载器就是在类加载到jvm阶段中使用的,

    怎么用?

    用的话,就是基于双亲委派模型来使用,当前的类加载器收到类加载器请求会先去询问他的父级累加器能不能加载,依次向上递归,若是都不能加载再依次交给子类,这个过程不需要我们人为参与,jvm已经帮我们做了。

    评论

报告相同问题?