收藏 分享(赏)

Class.forName() 和 ClassLoader.loadClass()的区别.pdf

上传人:精品资料 文档编号:10907862 上传时间:2020-01-20 格式:PDF 页数:2 大小:77.49KB
下载 相关 举报
Class.forName() 和 ClassLoader.loadClass()的区别.pdf_第1页
第1页 / 共2页
Class.forName() 和 ClassLoader.loadClass()的区别.pdf_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Class.forName() 和 ClassLoader.loadClass()的 区 别 ?Class.forName() 和 Class.forName().NewInstance()的 区 别 ?Class.forName(“xx.xx“)等 同 于Class.forName(“xx.xx“,true,CALLClass.class.getClassLoader(),第 二 个 参 数 (bool)表 示 装 载 类 的 时 候 是 否 初 始 化 该 类 , 即 调 用 类 的 静 态块 的 语 句 及 初 始 化 静 态 成 员 变 量 。ClassLoader loader =T

2、hread.currentThread.getContextClassLoader(); /也 可 以 用(ClassLoader.getSystemClassLoader()Class cls = loader.loadClass(“xx.xx“); /这 句 话 没 有 执 行 初 始化 , 其 实 与 Class.forName(“xx.xx“, false, loader)是 一 致 的 , 只 是loader.loadClass(“xx.xx“)执 行 的 是 更 底 层 的 操 作 。只 有 执 行 cls.NewInstance()才 能 够 初 始 化 类 , 得 到 该 类

3、的 一 个 实 例 Class的 装 载 分 了 三 个 阶 段 , loading, linking和 initializing, 分 别定 义 在 The Java Language Specification的 12.2, 12.3和 12.4。Class.forName(className) 实 际 上 是 调 用 Class.forName(className,true, this.getClass().getClassLoader()。 注 意 第 二 个 参 数 , 是 指Class被 loading后 是 不 是 必 须 被 初 始 化 。ClassLoader.loadCla

4、ss(className)实 际 上 调 用 的 是ClassLoader.loadClass(name, false), 第 二 个 参 数 指 出 Class是 否 被link。区 别 就 出 来 了 。 Class.forName(className)装 载 的 class已 经 被 初 始化 , 而 ClassLoader.loadClass(className)装 载 的 class还 没 有 被link。一 般 情 况 下 , 这 两 个 方 法 效 果 一 样 , 都 能 装 载 Class。 但 如 果 程 序 依 赖于 Class是 否 被 初 始 化 , 就 必 须 用 C

5、lass.forName(name)了 。例 如 , 在 JDBC编 程 中 , 常 看 到 这 样 的 用 法 ,Class.forName(“com.mysql.jdbc.Driver“), 如 果 换 成 了getClass().getClassLoader().loadClass(“com.mysql.jdbc.Driver“),就 不 行 。为 什 么 呢 ? 打 开 com.mysql.jdbc.Driver的 源 代 码 看 看 ,/ Register ourselves with the DriverManager/static try java.sql.DriverManager.registerDriver(new Driver(); catch (SQLException E) throw new RuntimeException(“Cant register driver!“);原 来 , Driver在 static块 中 会 注 册 自 己 到 java.sql.DriverManager。 而static块 就 是 在 Class的 初 始 化 中 被 执 行 。 所 以 这 个 地 方 就 只 能 用Class.forName(className)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报