品易云推流 关闭
文章详情页
文章 > java基础 > java类加载器的常用方法

java类加载器的常用方法

java类加载器

头像

小妮浅浅

2021-07-27 09:18:194477浏览 · 0收藏 · 0评论

1、loadClass,当类加载请求到来时,首先从缓存中找到类对象。

如果有直接返回,如果没有,交给这种加载的父加载器加载。如果没有父加载,交给顶级启动加载器加载。如果最后还是找不到,用findClass()加载;

2、FindClass

按名称或位置加载Class字节码,然后使用defineClass通常由子类实现,如果需要定制ClassLoader,则必须重写该方法。

3、defineClass

defineClass()方法是将byte字节流解析为JVM能够识别的Class对象(ClassLoader中已经实现了该方法逻辑),该方法不仅可以通过class文件实例化class对象,还可以通过其他方法实例化class对象,例如,通过网络接收一类字节码,然后转换为byte字节流来创建相应的Class对象,而defineClass()方法通常与findClass()方法一起使用,通常在自定义类加载器时,会直接覆盖Classloader的findClass()方法并编写加载规则,获得要加载类的字节码后转换为流,然后调用defineClass()方法生成类的Class对象,简单地说就是将classs文件转换为Classs对象。

4、resolveClass使用类Class对象创建完成也可以同时解析。

之前我们说链接阶段主要是对字节码进行验证,分配存储器,设置类变量,同时将字节码文件中的符号引用转换为直接引用。

以上就是java类加载器的常用方法,希望对大家有所帮助。更多Java学习指路:java教程

本教程操作环境:windows7系统、java10版,DELL G3电脑。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图