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()方法的含義。