forName
是 Java 反射機制中的一個方法,用于動態加載并初始化指定的類。它與類加載器(ClassLoader)有著密切的關系。
在 Java 中,類加載器負責將字節碼文件(.class 文件)加載到內存中,并創建對應的 Class 對象。類加載器可以分為三種類型:引導類加載器(Bootstrap ClassLoader)、擴展類加載器(Extension ClassLoader)和系統類加載器(System ClassLoader)。這些類加載器共同構成了 Java 的類加載體系。
Class.forName()
方法的作用是加載并初始化指定的類。它接受一個字符串參數,表示要加載的類的全限定名(包括包名和類名)。當調用 forName
方法時,Java 虛擬機會按照以下步驟進行操作:
ClassNotFoundException
異常。需要注意的是,Class.forName()
方法不僅會加載指定的類,還會初始化該類。這意味著靜態代碼塊和靜態變量會被執行和初始化。如果你只想加載類而不初始化它,可以使用類加載器的 loadClass()
方法。
總之,Class.forName()
方法與類加載器之間的關系是:forName
方法利用類加載器的機制來動態加載并初始化指定的類。在實際應用中,我們可以根據需要選擇合適的類加載器來加載所需的類。