日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ClassLoader简介

發布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ClassLoader简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ClassLoader

? 所有的類加載器(除了根類加載器)都必須繼承java.lang.ClassLoader。它是一個抽象類,主要的方法如下:

loadClass

? 在ClassLoader的源碼中,有一個方法loadClass(String name,boolean resolve),這里就是雙親委托模式的代碼實現。從源碼中我們可以觀察到它的執行順序。需要注意的是,只有父類加載器加載不到類時,會調用findClass方法進行類的查找,所以,在定義自己的類加載器時,不要覆蓋掉該方法,而應該覆蓋掉findClass方法。

//ClassLoader類的loadClass源碼 protected Class<?> loadClass(String name, boolean resolve)throws ClassNotFoundException{synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loadedClass<?> 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 statssun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;}}

findClass

? 在自定義類加載器時,一般我們需要覆蓋這個方法,且ClassLoader中給出了一個默認的錯誤實現。

protected Class<?> findClass(String name) throws ClassNotFoundException {throw new ClassNotFoundException(name); }

defineClass

? 該方法的簽名如下。用來將byte字節解析成虛擬機能夠識別的Class對象。defineClass()方法通常與findClass()方法一起使用。在自定義類加載器時,會直接覆蓋ClassLoader的findClass()方法獲取要加載類的字節碼,然后調用defineClass()方法生成Class對象。

protected final Class<?> defineClass(String name,byte[] b,int off,int len)throws ClassFormatError

resolveClass

? 連接指定的類。類加載器可以使用此方法來連接類。

?

總結

以上是生活随笔為你收集整理的ClassLoader简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。