在编译或运行时,我们通常有很多类/jar 依赖,数据库驱动程序的jar 只是其中之一。那么,是吗
Class.forName(X)
必须扫描所有这些 .class/.jar 文件名才能找到名为 X 的正确驱动程序类?如果不是,Class.forName
是否有任何规则/算法来查找特定类?
最佳答案
它委托(delegate)给调用类的ClassLoader
。在大多数情况下,答案是肯定的,但是 ClassLoader
实现具有更复杂的规则,例如OSGI which uses dynamic modules或 JEE Server Application Classloading .
public static Class<?> forName(String className) throws ClassNotFoundException {
Class<?> caller = Reflection.getCallerClass();
return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}
关于java - Java 的 "Class.forName"是否扫描所有 jar 中的所有类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571007/