首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中装入类有哪些不同的方法

在Java中装入类有哪些不同的方法
EN

Stack Overflow用户
提问于 2013-04-22 02:21:25
回答 1查看 5.6K关注 0票数 3

我正在学习java,在了解ClassNotFoundException概念的过程中,我遇到了术语Class.forName("xyz");。我知道这是装入类的一种方式。我的问题是,在java中装入类的不同方式是什么?什么时候使用哪一个?什么比其他的更受欢迎?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 02:28:54

我将从最简单的开始(这里我假设类定义在类路径中可用,并且JVM可以加载它):

  1. 在代码中引用类名。当JVM找到该引用时,将最晚加载该类。

用于加载和初始化class.It的SomeClass someInstance =class.It使用当前类的类加载器。

加载类的Class.forName("XYZ");

  • ClassLoader#loadClass(String),,但不是initialize.You可以获取ClassLoader的实例并在该实例上调用loadClass(),该实例可以是自定义ClassLoader或系统ClassLoader。

ClassLoader.getSystemClassLoader().loadClass("XYZ");

  • Overloaded Class.forName() ,允许您指定要显式使用的类加载器,并使用initialize参数指定类是否必须初始化。

Class.forName(字符串名,布尔初始化,ClassLoader加载器)

对于JDBC,我们需要加载驱动程序类并初始化它。在某个地方,通过运行一些静态初始化器(尽管我还没有看到内部工作代码),驱动程序类被注册到JDBC驱动程序管理器。因此,我们需要使用类加载机制,其中加载驱动程序类并运行其静态初始化块。因此,最受欢迎的方式是Class.forName()

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16134621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档