六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 10|回复: 0

简单的从文件系统中加载类

[复制链接]

升级  22%

1

主题

1

主题

1

主题

童生

Rank: 1

积分
11
 楼主| 发表于 2013-2-3 10:39:56 | 显示全部楼层 |阅读模式
package com.hong.classLoader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class FileClassLoader extends ClassLoader {private static int byteLength;public Class myLoadClass(String name) throws IOException {byte[] date = getBytesFromFile(name);// 参数name要包含包名,否则找不到return defineClass(this.getClass().getPackage().getName() + "." + name,date, 0, byteLength);}public byte[] getBytesFromFile(String name) throws IOException {FileInputStream fis = new FileInputStream(new File("D:\\eclipse\\workspace\\MyProject\\bin\\com\\hong\\classLoader\\"+ name + ".class"));byte[] data = new byte[2048];int ch;while ((ch = fis.read(data)) != -1) {byteLength = ch;}return data;}} 继承ClassLoader,从文件系统中读取类的class文件,转换成byte流,调用defineClass 返回Class对象
 
main调用:
package com.hong.classLoader;import java.io.IOException;public class AppMain {public static void main(String[] args) throws IOException, Exception{FileClassLoader fileClassLoader = new FileClassLoader();Class fileClass=fileClassLoader.myLoadClass( "FileClassLoader");System.out.println(fileClass.newInstance().toString());}} 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表