自定义类加载器
来源:互联网 发布:英文软件 编辑:程序博客网 时间:2024/06/10 06:20
为什么要自定义?
我们的加载器默认从classpath下面加载类,如果有些类是远程的或者是其他文件目录下的,默认加载器是无法加载以上的类的,需要我们自己指定加载类路径,下面是代码,整个思路是把class文件一点一点读到byte数组里,然后使用二进制流操作对象类ByteArrayOutputStream从内存中读取byte数组中的值一点一点写到ByteArrayOutputStream对象里保存起来,返回该对象,使用父类里的defineClass方法将二进制数据解析成class对象,打印该class对象的一个具体实例【一切皆对象】
在本地F盘下面定义一个java类,手动编译成class字节文件
package test;public class Member{ public String toString(){ return "成功"; }}
class MyClassLoader extends ClassLoader{ public Class<?> loadMyClass(String className) throws Exception{ byte[] data = loadData(); return super.defineClass(className,data, 0, data.length); } private byte[] loadData() throws Exception{ InputStream is = new FileInputStream("F:"+File.separator+"Member.class"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] data = new byte[100]; int tmp = 0; while((tmp = is.read(data)) > 0){ bos.write(data, 0, tmp); } is.close(); bos.close(); return bos.toByteArray(); }}public class TestDemo { public static void main(String[] args) throws ClassNotFoundException, Exception { Class<?> clazz = new MyClassLoader().loadMyClass("test.Member"); System.out.println(clazz.newInstance()); }}运行结果:成功
阅读全文
0 0
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- 自定义类加载器
- Http协议详解
- js笔记
- Java8 Stream
- mysql常用命令
- 前端规范汇总
- 自定义类加载器
- Retrofit使用GsonConverterFactory有些字段解析老是null的问题
- 快速使用MPAndroidChart实现图表制作
- android 网络连接的判断
- idea创建spring boot集成使用dubbo、zookepper
- 2017.11月计划
- a标签中href=""的几种用法
- jsoup教程011-jsoup+Hibernate抓取某站9万条文章
- Linux system 软件管理