1. 程式人生 > >.class和class.forname 隨筆

.class和class.forname 隨筆

    class.forname() 這個方法class類的一個static成員。class物件就和其他的物件一樣,我們可以獲取並操作他的引用(也是類載入器的工作)。forname()是取得class物件的引用的一種方法。它是用一個包含目標類的文字名的string作輸入引數,返回的是一個class物件的引用。對forname()呼叫是為了它產生的副作用;如果類還沒被載入就載入他,在載入過程中,這個類的static子句會被執行。class.forname(“top.fancytoy”)

     java還提供了另一種方法來生成對class物件的引用,即用類字面常量。對上面的那個來說也可以fancytoy.class;來獲取引用。

這樣做不僅更簡單,而且更安全,因為它在編譯時就會受到檢查。類字面常量不僅可以應用於普通的類,也可以應用於介面,陣列以及基本的資料型別。但是當使用.class來建立class物件的引用時,不會自動的初始化該類的class物件。為了使用類而做的準備工作實際包含三個步驟:

1:載入、這個是由類載入器執行的。該步驟將查詢位元組碼(通常在classpath所指定的路徑中查詢,但這並非是必須的),並從這些位元組碼中建立一個class物件。

2:連結、在連結階段將驗證類中的位元組碼,為靜態域分配儲存空間,並且如果必須的話,將解析這個類建立的對其它類的所有引用。

3:初始化、如果該類具有超類,則對其初始化,執行靜態初始化器和靜態初始化塊。