defineClass,loadClass,findClass它们有什么区别
答案:1 悬赏:40 手机版
解决时间 2021-03-23 22:20
- 提问者网友:山高云阔
- 2021-03-22 22:06
defineClass,loadClass,findClass它们有什么区别
最佳答案
- 五星知识达人网友:执傲
- 2021-03-22 23:19
loadClass();是加载 类名.class 字节码文件的工具
findClass();是类加载器在JVM内部实现查找指定路径下的 . class 文件的机制,BootStrap ,ExtClassLoader,AppClassLoader,按照这个顺序查找,有就给JVM加载,没有就往下找, 在基础加强里,张老师 就是复写了该方法,将指定目录下的字节码文件,通过ByteArrayOutputStream 解密后的字节码文件,给JVM 去加载,实现解密的过程
defineClass();是将你定义的字节码文件经过字节数组流解密之后,将该字节流数组生成字节码文件,也就是该类的 文件的类名.class,
注意一点,视频里用的是过时的方法,defineClass( byte[] b ,0, b.length) ,这样生成的字节码就是默认的字节码文件。
他的替代方法是 defineClass(String name , byte[] b , 0, b.length ),声明时,name 是指定该类名,这里的类名是指包含它所属的 包名+类名
findClass();是类加载器在JVM内部实现查找指定路径下的 . class 文件的机制,BootStrap ,ExtClassLoader,AppClassLoader,按照这个顺序查找,有就给JVM加载,没有就往下找, 在基础加强里,张老师 就是复写了该方法,将指定目录下的字节码文件,通过ByteArrayOutputStream 解密后的字节码文件,给JVM 去加载,实现解密的过程
defineClass();是将你定义的字节码文件经过字节数组流解密之后,将该字节流数组生成字节码文件,也就是该类的 文件的类名.class,
注意一点,视频里用的是过时的方法,defineClass( byte[] b ,0, b.length) ,这样生成的字节码就是默认的字节码文件。
他的替代方法是 defineClass(String name , byte[] b , 0, b.length ),声明时,name 是指定该类名,这里的类名是指包含它所属的 包名+类名
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯