1. 程式人生 > >Class.getClassLoader()的一個小陷阱:)

Class.getClassLoader()的一個小陷阱:)

jdk中關於getClassLoader()的描述:
/**
     * Returns the class loader for the class.  Some implementations may use
     * null to represent the bootstrap class loader. This method will return
     * null in such implementations if this class was loaded by the bootstrap
     * class loader.
     *
     * <p> If a security manager is present, and the caller's class loader is
     * not null and the caller's class loader is not the same as or an ancestor of
     * the class loader for the class whose class loader is requested, then
     * this method calls the security manager's <code>checkPermission</code>
     * method with a <code>RuntimePermission("getClassLoader")</code>
     * permission to ensure it's ok to access the class loader for the class.
     *
     * <p>If this object
     * represents a primitive type or void, null is returned.
.....

這裡jdk告訴我們:如果一個類是通過bootstrap 載入的,那我們通過這個類去獲得classloader的話,有些jdk的實現是會返回一個null的,比如說我用 new Object().getClass().getClassLoader()的話,會返回一個null,這樣的話上面的程式碼就會出現NullPointer異常.所以保險起見我們最好還是使用我們自己寫的類來獲取classloader,這樣一來就不會有問題Smile
。哎,jdk呀,你怎麼能這樣~~~~~~~~~~~~~~~~~~