- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在学习 java,在研究 ClassNotFoundException 概念的过程中,我遇到了术语 Class.forName("xyz");
。我知道这是加载类(class)的一种方式。我的问题是,在 java 中加载类有哪些不同的方法?什么时候使用哪一个?比其他人更喜欢什么?
最佳答案
我将从最简单的开始(这里我假设类定义在类路径中可用并且 JVM 可以加载它):
在代码中引用类名。当 JVM 找到该引用时,该类将被加载到最新。
SomeClass someInstance = null;
Class.forName(String) , 加载和初始化类。它使用当前类的类加载器。
Class.forName("XYZ");
ClassLoader#loadClass(String) ,加载类,但不初始化。您可以获得 ClassLoader
的实例并在该实例上调用 loadClass()
,它可以是自定义 ClassLoader 或系统 ClassLoader .
ClassLoader.getSystemClassLoader().loadClass("XYZ");
重载 Class.forName() , 允许您指定要显式使用的类加载器和 initialize
参数以指定是否必须初始化该类。
Class.forName(String name, boolean initialize, ClassLoader loader)
对于JDBC
,我们需要加载驱动类并初始化它。在某个地方,驱动程序类通过运行一些静态初始化程序在 JDBC 驱动程序管理器中注册(尽管我还没有看到内部工作代码)。因此,我们需要使用类加载机制来加载驱动程序类并运行其静态初始化 block 。因此,最首选的方法是 Class.forName()
。
关于java - 在 Java 中加载类有哪些不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134621/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!