Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别
转载自 Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别
class A
{static {System.out.println("Class A is Loading now");}public A(){System.out.println("A new Class A instance is creating now ...");}
};class B
{public static void main(String[] argv){try{//Class.forName("A");ClassLoader.getSystemClassLoader().loadClass("A");}catch(Exception e){System.out.println(e);}}
};
使用Class.forName()的静态方法jvm会装载类 并且执行 static { }中的代码,而Class.Loader.loadClass()不会执行static()的代码。
在常用的JDBC驱动中,就是使用了这个方法。
public class Driver extends NonRegisteringDriver implements java.sql.Driver {// ~ Static fields/initializers// ---------------------------------------------//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}// ~ Constructors// -----------------------------------------------------------/*** Construct a new driver and register it with DriverManager* * @throws SQLException* if a database error occurs.*/public Driver() throws SQLException {// Required for Class.forName().newInstance()}
}
以上代码摘录自mysql的jdbc驱动。
Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url,user,pwd);
写程序时候的调用,这也是我当初刚看这段代码的时候,始终想不明白的地方。
现在总算知道了来龙去脉。
Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别相关推荐
- Class.forName和ClassLoader有什么区别
本文来说下Class.forName 和 ClassLoader 有什么区别 文章目录 概述 实例测试 应用场景 本文小结 概述 在 java 中 Class.forName() 和 ClassLoa ...
- 面试题:Class.forName 和 ClassLoader 有什么区别?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://t.cn/AiQQ7dwi 在 java 中 ...
- 获取第二个匹配class_面试题:Class.forName 和 ClassLoader 有什么区别?
来源:http://t.cn/AiQQ7dwi 在 java 中 Class.forName() 和 ClassLoader 都可以对类进行加载.ClassLoader 就是遵循双亲委派模型最终调用启 ...
- 面试题鬼的很:Class.forName 和 ClassLoader 有什么区别?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源 | http://rrd.me/eW9gG 在 ja ...
- 面试官 | Class.forName 和 ClassLoader 有什么区别?
作者 | 纪莫 来源 | dwz.date/eUc 在 Java 中 Class.forName() 和 ClassLoader 都可以对类进行加载.ClassLoader 就是遵循双亲委派模型最终调 ...
- Class.forName 和 ClassLoader 到底有啥区别?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 纪莫 来源 | https://www.cnblogs. ...
- Java中Class.forName和 ClassLoader.loadClass()区别
一.类加载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象: 链接:执行下面的校验.准备和解析步骤,其中 ...
- 反射中Class.forName()和ClassLoader.loadClass()的区别
一 Java类装载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象: 链接:执行下面的校验.准备和解析步骤,其 ...
- 【重难点】【JVM 02】反射在 JVM 层面的实现流程、Class.forName() 和 ClassLoader.loadClass 的区别
[重难点][JVM 02]反射在 JVM 层面的实现流程.Tomcat 的请求流程和 JVM 的类加载情况 文章目录 [重难点][JVM 02]反射在 JVM 层面的实现流程.Tomcat 的请求流程 ...
最新文章
- vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。
- 卡方 python_卡方优度检测 (Python 实现) --基于jupyter
- eclipse 搭建Android 开发环境(ADT安装和sdk下载,选择)
- 随机调用mysql数据库表值10条php_PHP随机显示mysql数据库中的数据
- 数据可视化大屏设计经验分享 【进阶篇】
- js常用内建对象之:String对象
- redis搭建 (centos)并测试验证
- 让你页面速度飞起来的前端性能优化方案
- 毕设题目:Matlab机器人路径规划
- 计算机专业工艺流程简述,CNC加工中心编程的工艺流程,新手必读! ! !
- 软件构造过程与配置管理
- Words Reciting 2016.5.4
- 实现一个简单的Database1
- 数据中台在企业数字化转型中的践行(上篇)
- 不同Normalization之间的比较
- ctfshow萌新红包题writeup
- python绘制光滑曲线
- Python数据分析实战之物流行业数据分析
- objective-c复制
- [转]Go在谷歌:以软件工程为目的的语言设计
热门文章
- 飞机游戏项目完整代码(详解JAVA300集)
- [PAT乙级]1007 素数对猜想
- [剑指offer]面试题26:复杂链表的复制
- [剑指offer]面试题1:赋值运算符函数
- 高等数学上-赵立军-北京大学出版社-题解-练习2.6
- number six
- caffe/common.cu error: function atomicadd has already been defined
- dsu on tree 题集 + ac代码
- [2020多校A层12.1]树(倍增/单调栈/dfs栈)
- Codeforces Round #507 (Div. 1) D. You Are Given a Tree 根号分治 + dp