【黑马程序员】java基础加强_类加载器
来源:互联网 发布:淘宝网电器商城 编辑:程序博客网 时间:2024/05/22 17:51
------- android培训、java培训、期待与您交流! ----------
类加载器(class loader),简单来说就是用于将java类加载到java虚拟机中。类加载器通过读取java字节码文件(.class),将其转换成Class类的实例,并且每个实例都可以用来表示一个java类。
系统提供的类加载器有三种:
BootStap--------------------->JRE/lib/rt.jar
ExtClassLoader------------>JRE/lib/ext/*.jar
AppClassLoader----------->CLASSPATH指定的所有jar或目录
除此之外,程序员还可以自定义加载器。
类的一般加载顺序为:AppClassLoader加载某类,先向ExtClassLoader提出请求,ExtClassLoader也先向BootStap提出请求,BootStap找到了就加载,没找到就还给ExtClassLoader,ExtClassLoader找到加载,没找到还给AppClassLoader,AppClassLoader找到加载,没找到报错。
所以如果我们写一个System类,但是我们在使用的时候,java虚拟机不会加载我们写的这个,而是加载rt包里面的System类
这个时候就要自定义加载类,让java虚拟机加载我们自定义的类。
package cn.itheima.test; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class MyClassLoader { public static void main(String[] args) { // TODO Auto-generated method stub ClassLoader cl = new ClassLoader() { protected Class<?> findClass(String name) throws ClassNotFoundException { // TODO Auto-generated method stub FileInputStream fi = null; try { fi = new FileInputStream(name); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ByteArrayOutputStream bo = new ByteArrayOutputStream(); //从自己的class文件里面读取数据 int dat = -1; try { while ((dat = fi.read()) != -1) { bo.write(dat); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (fi != null) { fi.close(); } if (bo != null) { bo.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回字节码, 交给加载器 return defineClass(name, bo.toByteArray(), 0, bo.toByteArray().length); } }; } }这样 一个自定义的类加载器就完成了,这个类加载器还可以对class文件进行加密,这样就可以防止被其他人拿到字节码文件里面的参数或者方法。
0 0
- 黑马程序员 java基础加强_类加载器
- 【黑马程序员】java基础加强_类加载器
- 黑马程序员_基础加强_类加载器
- 黑马程序员_基础加强(6) 类加载器
- 黑马程序员_基础加强(类加载器)
- 黑马程序员_<<基础加强---类加载器>>
- 黑马程序员-java基础加强_代理和类加载器
- 黑马程序员_ 黑马程序员_基础加强第二天——类加载器
- 黑马程序员-JAVA基础加强-类加载器
- 【黑马程序员】java基础加强---------类加载器(classLoader)
- 【黑马程序员】Java基础加强17:类加载器ClassLoader
- 黑马程序员—Java基础加强(类加载器)
- 黑马程序员---java基础加强---类加载器
- 黑马程序员-->Java基础加强-->类加载器
- 黑马程序员基础加强---类加载器
- 黑马程序员---基础加强:类加载器
- 黑马程序员_基础加强之类加载器
- 黑马程序员_学习日记十六_基础加强之泛型、类加载器
- 尝试 “实验楼”在线教育平台
- 带有播放列表的网页播放器
- 我的博客开通了
- 前端开发者进阶之惰性函数定义
- 自定义函数的C微程序(虽然毫无含金量)
- 【黑马程序员】java基础加强_类加载器
- 我的博客开通了
- tlplayer for wince 版本正式商用
- 我的博客开通了
- 2、数据结构习题——第二章 线性表
- HDU 1195 Open the Lock (双向广搜)
- 我的博客开通了
- javascript备忘录
- 我的博客开通了