【JVM学习笔记】Class.forName方法学习

﹥>﹥吖頭↗ 提交于 2019-11-29 05:00:00

三个参数的版本的源代码如下

 

 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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!