三个参数的版本的源代码如下
doc文档翻译
使用给定的类加载器(即第3个参数)返回与具有给定字符串名称(第1个参数)的类或接口关联的Class对象。给定类或接口的完全限定名称(以getName返回的相同格式),此方法尝试查找,加载和链接类或接口。指定的类加载器用于加载类或接口。如果参数加载器为null,则通过引导类加载器加载该类。仅当initialize参数为true且之前尚未初始化时,才会初始化该类。 如果name表示基本类型或void,则将尝试在名称为name的未命名包中查找用户定义的类。因此,此方法不能用于获取表示基本类型或void的任何Class对象。 如果name表示数组类,则加载数组类的组件类型但不进行初始化。 例如,在实例方法中,表达式为: 的Class.forName("Foo") 相当于: Class.forName("Foo",true,this.getClass().getClassLoader()) 请注意,此方法会引发与Java语言规范的第12.2节,第12.3节和第12.4节中指定的加载,链接或初始化相关的错误。请注意,此方法不会检查其调用者是否可以访问所请求的类。 如果加载器为null,并且存在安全管理器,并且调用者的类加载器不为null,则此方法使用RuntimePermission(“getClassLoader”)权限调用安全管理器的checkPermission方法,以确保可以访问引导类加载器。 Parameters: name - 所需类的完全限定名称 initialize - 如果为true,则将初始化类。请参阅Java语言规范的第12.4节。 loader - 必须加载类的类加载器 Returns: 表示所需类的类对象 Throws: LinkageError - 如果链接失败 ExceptionInInitializerError - 如果此方法引发的初始化失败 ClassNotFoundException - 如果指定的类加载器无法找到该类 Since: 1.2 see also: forName(String),ClassLoader 外部注释: @ org.jetbrains.annotations.NonNls