jvm十二:自定义类加载器
生活随笔
收集整理的這篇文章主要介紹了
jvm十二:自定义类加载器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.atChina.jvm;import java.io.*;public class Test16 extends ClassLoader{private String classLoaderName;private String fileExtension = ".class";public Test16(String classLoaderName){super(); // 默認系統類加載器是自定義類加載器的父加載器this.classLoaderName = classLoaderName;}public Test16(ClassLoader parent, String classLoaderName){super(parent);// 為自定義類加載器定義父類加載器this.classLoaderName = classLoaderName;}@Overrideprotected Class<?> findClass(String className){System.out.println("findClass.........");byte[] data = this.loadClassData(className);return this.defineClass(className, data, 0, data.length);}private byte[] loadClassData(String name){ByteArrayOutputStream baos = null;byte[] data = null;int ch = 0;FileInputStream fis = null;try {fis = new FileInputStream(new File(name+fileExtension));while(-1 != (ch = fis.read())){baos.write(ch);}data = baos.toByteArray();} catch (Exception e) {e.printStackTrace();}finally{try {fis.close();baos.close();} catch (IOException e) {e.printStackTrace();}}System.out.println("loadClassData.........."); // sout+tab鍵 可以快速生成 System.out.println()代碼return data;}public static void main(String[] args) throws Exception {Test16 t16 = new Test16("load1");test(t16);}public static void test(ClassLoader loader1) throws Exception {Class<?> clazz = loader1.loadClass("com.atChina.jvm.Test");System.out.println("test...");Object object = clazz.newInstance();System.out.println(object);System.out.println(object.getClass().getClassLoader());}
}
?
總結
以上是生活随笔為你收集整理的jvm十二:自定义类加载器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP和UDP是否可以绑定同一端口进行通
- 下一篇: jvm十三:类加载器命名空间