2016-11-16 76 views
-3
public class ClassLoaderTest { 

public static void main(String args[]) { 
    try {   
     //printing ClassLoader of this class 
     System.out.println("ClassLoaderTest.getClass().getClassLoader() : " 
          + ClassLoaderTest.class.getClassLoader()); 


     //trying to explicitly load this class again using Extension class loader 
     Class.forName("test.ClassLoaderTest", true 
         , ClassLoaderTest.class.getClassLoader().getParent()); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(ClassLoaderTest.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

}負載類與Java類加載器通過類的forName方法

的Class.forName具有第二個參數爲真,其指示將在Java初始化類。

類的初始化是什麼意思?

+1

[右有在[的JavaDoc](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#forName-java.lang.String -boolean-java.lang.ClassLoader-)它表示*「初始化 - 如果爲true,則該類將被初始化,參見Java語言規範第12.4節」。*因此[請參閱JLS的第12.4節](https:// docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.4)。 –

回答

0

類加載的初始化階段(加載,鏈接和初始化)包括按照類中定義的文本順序執行靜態初始化程序並初始化其靜態字段。

When class initialization happen

0

執行靜態代碼段初始化靜態申請和其他一些相關工作,以獲取更多信息看到這一點。 java class initialize