啟動類總結(jié)

先看一個例子

package com.cqs.learning.jvm;

import jdk.nashorn.tools.Shell;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author lixiaowen
 * @create 19-2-28
 */
public class ClassLoaderDemo {

    public static void main(String[] args) {

        // bootstrap class loader example &&
        System.out.println(Object.class  + " classloader: "+ Object.class.getClassLoader());

        //ext class loader example
        //System.out.println(System.getProperty("java.ext.dirs"));
        System.out.println(Shell.class + " classloader: " + Shell.class.getClassLoader());

        //App class loader example
        System.out.println(ClassLoaderDemo.class + " classloader: " + ClassLoaderDemo.class.getClassLoader());

        // self define class loader example
        SelfDefineClassLoader selfDefineClassLoader = new SelfDefineClassLoader();
        try {
            //指定自定義加載器
            Class<?> aClass = selfDefineClassLoader.loadClass("com.cqs.learning.jvm.ClassLoaderDemo");
            Object o = aClass.newInstance();
            System.out.println(o.getClass() +"\t classloader: " + o.getClass().getClassLoader());
            //System.out.println(o instanceof com.cqs.learning.jvm.ClassLoaderDemo);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }

   static class SelfDefineClassLoader extends ClassLoader{

       @Override
       public Class<?> loadClass(String name) throws ClassNotFoundException {
           String fileName = name.substring(name.lastIndexOf(".")+1) + ".class";
           InputStream is = getClass().getResourceAsStream(fileName);
           if (is == null){
               return super.loadClass(name);
           }
           try {
               byte[] bytes = new byte[is.available()];
               is.read(bytes);
               return defineClass(name,bytes,0, bytes.length);
           } catch (IOException e) {
               throw new RuntimeException();
           }
       }
   }
}
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 翻翻照片,已有兩年的歷史。 不知不覺中竟然那么久遠,我已然忘了時間在走。 時間可貴,時間亦廉。 生命堅韌,生命亦脆...
    Elainejiamei閱讀 237評論 0 0
  • 一、播放功能綜述 1、AVPlayer AVPlayer用來播放基于時間的視聽媒體的控制器對象。支持播放從本地、分...
    竹與豆閱讀 1,105評論 0 1
  • 與友人聊天感悟:無論夫妻、兄弟姐妹或是朋友一場,十年、十五年、二十年......或是更長余生......如若大家還...
    綠了心閱讀 115評論 0 0

友情鏈接更多精彩內(nèi)容