在Java应用程序中,Bootstrap类加载器(用于从JRE加载类,如rt.jar)为空。也就是java.util.ArrayList.class.getClassLoader() == null
。
这很烦人,因为在编写使用反射的库时,必须使用适当的类加载器,有时候它是null。因此,如果ClassLoader为null,则库应该调用Class.forName(String, false, classLoader)
而不是classLoader.loadClass(String)
。顺便说一句,当classLoader为null时,静态方法Proxy.newProxyInstance(classLoader, interfaces, invocationHandler)
可以正常工作。
但即使classLoader为null,是否还有ClassLoader.getResource(String)
或ClassLoader.getResources(String)
的等价物?我能想到的最接近的是new ClassLoader(classLoader).getResource(String)
,但它使用了超出必要的额外SecurityManager权限。