1. 程式人生 > >Class.forName()的作用

Class.forName()的作用

    我們在載入資料庫驅動的時候,一般會呼叫

Class.forName("com.mysql.jdbc.Driver");

    它的作用其實是獲得資料庫驅動的Class物件。

定義:

Class.forName返回與給定的字串名稱相關聯介面的Class物件。

Class.forName是一個靜態方法,同樣可以用來載入類。該方法有兩種形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。第一種形式的引數 name表示的是類的全名;initialize表示是否初始化類;loader表示載入時使用的類載入器。第二種形式則相當於設定了引數 initialize的值為 true,loader的值為當前類的類載入器。

為什麼不需要例項?

    Class.forName方法只是載入Class物件,並沒有獲取驅動例項。不過,在JDBC規範中明確要求這個Driver類必須向DriverManager註冊自己,即任何一個JDBCDriver的Driver類的程式碼都必須類似如下:
       
   public classMyJDBCDriver implements Driver { 
    static{ 
       DriverManager.registerDriver(new MyJDBCDriver()); 
   } 
   } 

    既然在靜態初始化器的中已經進行了註冊,所以我們在使用JDBC時只需要Class.forName(XXX.XXX);就可以了。