先來說說第二種方法:第二個方法值得注意的就是第二個參數boolean initialize,如果我們把這個參數設置為false,那么當我們加載完類后就不會執行靜態代碼和靜態的初始化動作。只有當我們new一個對象的時候才會初始化。而第三個參數是用來指明類的加載器的。
如果查看java.lang.Class類的源代碼,上述兩種方法最終都會調用Class類中的私有的native方法forName0(),此方法的聲明如下:
private static native Class forName0(String name, boolean init , ClassLoader loader) throws ClassNotFoundException;
所以當我們調用Class.forName(name )時,其實是在方法內部調用了:
forName0(name, true, ClassLoader.getCallerClassLoader());
文章來源于領測軟件測試網 http://www.kjueaiud.com/