理解Class.forName()


Class類概念

Class類用來描述一個類的結構,比如描述一個類有哪些成員,有哪些方法等。有多種方法可以獲取一個類對應的Class類實例,比如:

//第一種方式獲取描述Dog類結構的Class類實例
Class<Dog> clazz = Dog.class;
//第二種方式
Dog d = new Dog();
Class<Dog> clazz = d.getClass();

類加載概念

當使用一個類的時候(比如new一個類的實例),jvm會檢查此類是否被加載到內存,如果沒有,則會執行加載操作,加載操作的內容是,讀取類對應的class文件數據,解析此數據,構造一個此類對應的Class類的實例,此Class類的實例描述了類的結構,並且提供了調用此類成員的接口。此時jvm就可以使用該類了,比如實例化此類,或者調用此類的靜態方法。

java也提供了手動加載類的接口,class.forName()方法就是其中之一。

初始化參數指定的類,並且返回此類對應的Class實例。

類初始化概念

類被加載之后,jvm已經獲得了一個描述類結構的Class實例。但是還需要進行類初始化操作之后才能正常使用此類,類初始化操作就是執行一遍類的靜態語句,包括靜態變量的聲明還有靜態代碼塊。

Class.forName方法

此方法含義是:加載參數指定的類,並且初始化它。

在jdbc連接數據庫中的應用

到這里,不用解釋,讀者也會明白,在使用jdbc方式連接數據庫時,為什么要執行Class.forName('驅動類名')方法了:將驅動類的class文件裝載到內存中,並且形成一個描述此驅動類結構的Class類實例,並且初始化此驅動類,這樣jvm就可以使用它了,這就是Class.forName()方法的含義。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM