读书人

不同ClassLoader加载的种,能cast赋值啊

发布时间: 2012-11-06 14:07:00 作者: rapoo

不同ClassLoader加载的类,能cast赋值啊!
我在学习ClassLoader的时候.
参照下面的地址的文章:深入探讨 Java 类加载器
其中讲到下面的这段:
package guet.dream.jvm;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;public class FileSystemClassLoader extends ClassLoader {private String rootDir;public FileSystemClassLoader(String rootDir){this.rootDir = rootDir;}@Overrideprotected Class<?> findClass(String name) throws ClassNotFoundException{byte[] classData = getClassData(name);if(classData == null){throw new ClassNotFoundException();}else{return defineClass(name, classData, 0, classData.length);}}private byte[] getClassData(String className) {String path = classNameToPath(className);InputStream in;try {in = new FileInputStream(path);ByteArrayOutputStream baos = new ByteArrayOutputStream();int bufferSize = 4096;byte[] buffer = new byte[bufferSize];int bytesNumRead = 0;while((bytesNumRead = in.read(buffer)) != -1){baos.write(buffer,0,bytesNumRead);}return baos.toByteArray();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}private String classNameToPath(String className) {return rootDir+File.separatorChar+className.replace('.', File.separatorChar)+".class";}}

运行结果没有任何异常,希望,有对这方面了解的,各位网友,测试或者给解答下.
这好像是我发的第一个贴吧!
我的JDK信息如下:
引用
banxi1988@banxi:~$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.2) (6b22-1.10.2-0ubuntu1~11.04.1)
OpenJDK Server VM (build 20.0-b11, mixed mode)
banxi1988@banxi:~$

读书人网 >编程

热点推荐