日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 根据类路径获取类_Java类加载器

發布時間:2023/12/10 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 根据类路径获取类_Java类加载器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類加載器

Java程序可以通過類加載器來達到通過一個類的全限定類名來獲取該類的二進制字節流。

類與類加載器

對于任意一個類,都必須由加載它的類加載器和這個類本身一起共同確立其在Java虛擬機中的唯一性,每一個類加載器都擁有一個獨立的類名稱空間。即時這兩個類

雙親委派模型

三層類加載器:

  • 啟動類加載器(Bootstrap Class Loader):負責加載\lib目錄下面或者-Xbootclasspath參數指定的路徑下存放的類庫。啟動類加載器無法被Java程序直接引用。
  • 擴展類加載器(Extension Class Loader):擴展Java SE功能的類庫可以放在ext目錄下面,由該加載器加載。這種加載器被模塊化系統取代,開發者可以直接使用擴展類加載器加載Class文件
  • 應用程序類加載器(Application Class Loader):用來加載用戶類路徑下面的所有類庫,如果應用程序中沒有自定義過自己的類加載器,這個就是程序中默認的類加載器。

除此之外,用戶還可以自定義類加載器來實現特定功能

雙親委派模型要求除了頂層啟動類加載器以外,所有類加載器都應有自己的父類加載器。

雙親委派模型的工作流程:如果一個類加載器受到了類加載請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載去完成。

這個模型保證了一些底層類如Object是被同一個類加載器——啟動類加載器加載的,避免出現多個重名但是被虛擬機認為不同類的情況的出現。保證了Java虛擬機的穩定運行。

破壞雙親委派模型

當一些標準服務類(由啟動類加載器加載)需要調用用戶代碼的時候,啟動類加載器是無法得知這些應用程序中的接口代碼的,這時只能通過線程上下文類加載器來由上層逆向調用下層的代碼。這個類加載器可以通過java.lang.Thread類的setContextClassLoader()方法進行設置,如果線程還未設置,他將會從父線程中繼承一個,如果在應用程序的全局范圍內都沒有設置過的話,那這個類加載器默認的是應用程序類加載器。

后來在OSGI的環境下面,類加載器不再使用雙親委派模型,而是更加復雜的網狀結構

總結

以上是生活随笔為你收集整理的java 根据类路径获取类_Java类加载器的全部內容,希望文章能夠幫你解決所遇到的問題。

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