中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java雙親委派機制的原理

發布時間:2021-08-27 21:12:25 來源:億速云 閱讀:164 作者:chen 欄目:大數據

本篇內容主要講解“Java雙親委派機制的原理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java雙親委派機制的原理”吧!

   

雙親委派機制

我打開了我的AndroidStudio,搜索了下“ClassLoader”,然后打開“java.lang”包下的ClassLoader類。然后將代碼翻到loadClass方法:

    public Class<?> loadClass(String name) throws ClassNotFoundException {
        return loadClass(name, false);
    }
    //              -----????????-----
    protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException
    {
            // First, check if the class has already been loaded
            Class<?> c = findLoadedClass(name);
            if (c == null) {
                try {
                    if (parent != null) {
                        c = parent.loadClass(name, false);
                    } else {
                        c = findBootstrapClassOrNull(name);
                    }
                } catch (ClassNotFoundException e) {
                    // ClassNotFoundException thrown if class not found
                    // from the non-null parent class loader
                }

                if (c == null) {
                    // If still not found, then invoke findClass in order
                    // to find the class.
                    c = findClass(name);
                }
            }
            return c;
    }
 

其實這段代碼已經很好的解釋了雙親委派機制,為了大家更容易理解,我做了一張圖來描述一下上面一段代碼到底是怎么做的:  

Java雙親委派機制的原理

 
從上圖中我們就更容易理解了,當一個Hello.class這樣的文件要被加載時。不考慮我們自定義類加載器,首先會在AppClassLoader中檢查是否加載過,如果有那就無需再加載了。如果沒有,那么會拿到父加載器,然后調用父加載器的loadClass方法。父類中同理會先檢查自己是否已經加載過,如果沒有再往上。注意這個過程,知道到達Bootstrap classLoader之前,都是沒有哪個加載器自己選擇加載的。如果父加載器無法加載,會下沉到子加載器去加載,一直到最底層,如果沒有任何加載器能加載,就會拋出ClassNotFoundException

 

為什么要設計這種機制

這種設計有個好處是,如果有人想替換系統級別的類:String.java。篡改它的實現,但是在這種機制下這些系統的類已經被Bootstrap classLoader加載過了,所以并不會再去加載,從一定程度上防止了危險代碼的植入。


到此,相信大家對“Java雙親委派機制的原理”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼结县| 横峰县| 柳州市| 台南县| 大城县| 曲水县| 鄯善县| 东丰县| 腾冲县| 溆浦县| 绥滨县| 和田市| 南木林县| 永仁县| 大石桥市| 绥阳县| 比如县| 永平县| 平谷区| 绥化市| 拜泉县| 镇赉县| 呈贡县| 甘德县| 夏河县| 泾阳县| 托克逊县| 新和县| 宜良县| 嵩明县| 蓬莱市| 鱼台县| 厦门市| 溧水县| 日喀则市| 昭通市| 涟水县| 英吉沙县| 绿春县| 通州市| 盐津县|