zoukankan      html  css  js  c++  java
  • 设计一个类加载器

    类加载器用于实现类的加载动作,但它在Java程序中起到的作用远远不限于类加载阶段。对于任何一个类,都需要由加载它的类加载器和这个类本身来决定其在Java虚拟机中的唯一性

     1 package com.study.classLoad;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 /**
     6  * 设计一个简单的类加载器
     7  * @author xiaojuan
     8  *
     9  */
    10 public class ClassLoaderTest {
    11 
    12     public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    13         // TODO Auto-generated method stub
    14         ClassLoader myLoader = new ClassLoader(){
    15 
    16             @Override
    17             public Class<?> loadClass(String name)
    18                     throws ClassNotFoundException {
    19                 try {
    20                     //String filename = "com.study.classLoad.ClassLoaderTest";
    21                     String filename = name.substring(name.lastIndexOf(".") + 1) + ".class";
    22                     InputStream is = getClass().getResourceAsStream(filename);
    23                     if (is == null) {
    24                         return super.loadClass(name);
    25                     }
    26                     byte[] b = new byte[is.available()];
    27                     is.read(b);
    28                     return defineClass(name, b, 0, b.length);
    29                 } catch (IOException e) {
    30                     throw new ClassNotFoundException();
    31                 }
    32                 
    33             }
    34             
    35         };
    36         Object obj = myLoader.loadClass("com.study.classLoad.ClassLoaderTest").newInstance();
    37         System.out.println(obj.getClass());
    38         System.out.println(obj instanceof com.study.classLoad.ClassLoaderTest);
    39         
    40     }
    41 
    42 }
  • 相关阅读:
    查看另外一台服务器的版本号
    制作数据集(二)
    制作数据集(一)
    中文分词工具包 PKUSeg
    Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend)
    修改主机名
    例题
    Oracle基本使用
    Linux里面的MySQL忘记密码RROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    SpringBoot2.x以上配置schema.sql脚本
  • 原文地址:https://www.cnblogs.com/zk753159/p/9615355.html
Copyright © 2011-2022 走看看