最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
怎么在Android中利用ClassLoader對(duì)類進(jìn)行加載-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)怎么在Android中利用ClassLoader對(duì)類進(jìn)行加載,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都網(wǎng)頁(yè)設(shè)計(jì)、小程序設(shè)計(jì)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、APP應(yīng)用開發(fā)是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來(lái)見證!

Java的類加載設(shè)計(jì)了一套雙親代理的模式,使得用戶沒(méi)法替換系統(tǒng)的核心類,從而讓應(yīng)用更安全。所謂雙親代理就是指,當(dāng)加載類的時(shí)候首先去Bootstrap中加載類,如果沒(méi)有則去Extension中加載,如果再?zèng)]有才去AppClassLoader中去加載。從而實(shí)現(xiàn)安全和穩(wěn)定。

Java ClassLoader

BootstrapClassLoader

引導(dǎo)類加載器 ,用來(lái)加載Java的核心庫(kù)。通過(guò)底層代碼來(lái)實(shí)現(xiàn)的,基本上只要parent為null,那就表示引導(dǎo)類加載器。

比如:charsets.jar、deploy.jar、javaws.jar、jce.jar、jfr.jar、jfxswt.jar、jsse.jar、management-agent.jar、plugin.jar、resources.jar、rt.jar

ExtClassLoader

拓展類加載器 ,用來(lái)加載Java的拓展的類庫(kù), ${JAVA_HOME}/jre/lib/ext/ 目錄中的所有jar。

比如:cldrdata.jar、dnsns.jar、jfxrt.jar、localedata.jar、nashorn.jar、sunec.jar、sunjce_provider.jar、sunpkcs11.jar、zipfs.jar等等

AppClassLoader

系統(tǒng)類加載器 (不要被名字給迷惑),用來(lái)加載Java應(yīng)用中的類。一般來(lái)說(shuō)自己寫的類都是通過(guò)這個(gè)加載的。而Java中 ClassLoader.getSystemClassLoader() 返回的就是AppClassLoader。(Android中修改了ClassLoader的邏輯,返回的會(huì)是一個(gè)PathClassLoader)

自定義ClassLoader

用戶如果想自定義ClassLoader的話,只需要繼承自 java.lang.ClassLoader 即可。

ClassLoader中與加載類相關(guān)的方法:

  1. getParent() 返回該類加載器的父類加載器。
  2. loadClass(String name) 加載名稱為 name的類,返回的結(jié)果是 java.lang.Class類的實(shí)例。
  3. findClass(String name) 查找名稱為 name的類,返回的結(jié)果是 java.lang.Class類的實(shí)例。
  4. findLoadedClass(String name) 查找名稱為 name的已經(jīng)被加載過(guò)的類,返回的結(jié)果是 java.lang.Class類的實(shí)例。
  5. defineClass(String name, byte[] b, int off, int len) 把字節(jié)數(shù)組 b中的內(nèi)容轉(zhuǎn)換成 Java 類,返回的結(jié)果是 java.lang.Class類的實(shí)例。這個(gè)方法被聲明為 final的。

也許你不太了解上面幾個(gè)函數(shù)的區(qū)別,沒(méi)關(guān)系,我們來(lái)看下源碼是如何實(shí)現(xiàn)的。

//ClassLoader.java
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) {
      long t0 = System.nanoTime();
      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.
        long t1 = System.nanoTime();
        c = findClass(name);

        // this is the defining class loader; record the stats
      }
    }
    return c;
}

本文名稱:怎么在Android中利用ClassLoader對(duì)類進(jìn)行加載-創(chuàng)新互聯(lián)
文章路徑:http://fisionsoft.com.cn/article/djcsgg.html