国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

擴展ClassLoader定制類裝載器

2019-11-18 14:50:50
字體:
來源:轉載
供稿:網友

    java的ClassLoader與Package機制介紹了ClassLoader的委派機制,它是把裝載的任務傳遞給上級的裝載器的,依次類推,直到啟動類裝載器(沒有上級類裝載器)。假如啟動類裝載器能夠裝載這個類,那么它會首先裝載。假如不能,則往下傳遞。其實這引出一個運行時包的概念。不同裝載器裝載的類,即使包名相同也不能互相訪問。這樣保證了核心類庫不被破壞。

    本文將講述如何擴展ClassLoader類實現一個自己的類裝載器,每個Class對象都有一個引用指向裝載他的ClassLoader,你可以通過public ClassLoader getClassLoader()方法得到它。為了創建自己的類裝載器我們應該擴展ClassLoader類,這是一個抽象類。我們目的是從本地文件系統使用我們實現的類裝載器裝載一個類。我們創建一個FileClassLoader extends ClassLoader。我們需要覆蓋ClassLoader中的
findClass(String name)方法,這個方法通過類的名字而得到一個Class對象。
    public Class findClass(String name)
    {
        byte[] data = loadClassData(name);
        return defineClass(name, data, 0, data.length);
    }
我們還應該提供一個方法loadClassData(String name),通過類的名稱返回class文件的字節數組。然后使用ClassLoader提供的defineClass()方法我們就可以返回Class對象了。
    public byte[] loadClassData(String name)
    {
        FileInputStream fis = null;
        byte[] data = null;
        try
        {
            fis = new FileInputStream(new File(drive + name + fileType));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int ch = 0;
            while ((ch = fis.read()) != -1)
            {
                baos.write(ch);
              
            }
            data = baos.toByteArray();
        } catch (IOException e)
        {
            e.PRintStackTrace();
        }
       
        return data;
    }
這里我們是從D盤裝載一個類。

     下面我們提供一個類public class MyApp{},類中沒有定義任何方法和變量,下面我們編譯MyApp.java得到MyApp.class,然后把文件放在D盤的根目錄。為了證實MyApp.class是被我們定義的classloader裝載的,我們在FileClassLoader的main()方法中打印出裝載MyApp.class的類裝載器的名稱。
    public static void main(String[] args) throws Exception
    {
        FileClassLoader loader = new FileClassLoader();
        Class objClass = loader.loadClass("MyApp", true);



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临高县| 崇阳县| 深州市| 泰来县| 临泽县| 乐业县| 虞城县| 甘谷县| 博客| 汾西县| 临清市| 蕉岭县| 繁昌县| 确山县| 泰宁县| 古田县| 鲁甸县| 万宁市| 泽普县| 横峰县| 连山| 五华县| 行唐县| 云霄县| 凤台县| 红原县| 余江县| 西昌市| 通河县| 凉城县| 奉新县| 白城市| 开封市| 华坪县| 志丹县| 穆棱市| 醴陵市| 大理市| 襄垣县| 青神县| 五华县|