亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

岢岚县| 凌云县| 阿勒泰市| 大名县| 凤山市| 兴仁县| 远安县| 门头沟区| 阿克苏市| 辽阳县| 彭阳县| 永修县| 岫岩| 远安县| 宁武县| 佛山市| 黔西| 沙田区| 定南县| 江津市| 客服| 新巴尔虎左旗| 蓬溪县| 双桥区| 潼关县| 青海省| 永新县| 黄浦区| 响水县| 西贡区| 绥阳县| 九江市| 手游| 通城县| 淮北市| 尼勒克县| 涟源市| 临城县| 清丰县| 古浪县| 扎赉特旗|