启动类总结

先看一个例子

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 翻翻照片,已有两年的历史。 不知不觉中竟然那么久远,我已然忘了时间在走。 时间可贵,时间亦廉。 生命坚韧,生命亦脆...
    Elainejiamei阅读 1,562评论 0 0
  • 一、播放功能综述 1、AVPlayer AVPlayer用来播放基于时间的视听媒体的控制器对象。支持播放从本地、分...
    竹与豆阅读 4,681评论 0 1
  • 与友人聊天感悟:无论夫妻、兄弟姐妹或是朋友一场,十年、十五年、二十年......或是更长余生......如若大家还...
    绿了心阅读 1,063评论 0 0

友情链接更多精彩内容