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


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

     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
  • 相关阅读:
    第三周作业
    第二周作业
    实时控制软件大作业总结
    实时控制软件大作业四
    实时控制软件大作业三
    实时控制软件大作业二
    轨迹插补程序
    实时控制软件大作业博客一
    实时控制软件设计第四周作业
    实时控制软件设计第三周作业-1
  • 原文地址:https://www.cnblogs.com/heben/p/11455600.html
Copyright © 2020-2023  润新知