类显式加载

1、Class.forName("classloader.Dog");  方式加载   Example1

 1 package classloader;
2
3 public class Example {
4 public static void main(String[] args) throws ClassNotFoundException {
5
6 Class<?> dogClass = Class.forName("classloader.Dog");
7 System.out.println("className=" + dogClass.getName());
8 }
9 }
10
11 class Dog {
12 static {
13 System.out.println("Dog 的静态块初始化");
14 }
15 }

结果:

Dog 的静态块初始化
className=classloader.Dog

说明 静态化部分已经被执行

2、ClassLoader.loadClass("classloader.Dog"); 方式加载   Example1

 1 package classloader;
2
3 public class Example {
4 public static void main(String[] args) throws ClassNotFoundException {
5
6 ClassLoader cl1 = Example.class.getClassLoader(); //获取到class对象; .ClassLoader获取到加载这个类的ClassLoader
7
8 Example obj = new Example();
9 ClassLoader cl2 = obj.getClass().getClassLoader();
10
11 System.out.println("cl1.equals(cl2) ? " + cl1.equals(cl2));
12
13 Class<?> loadClass = cl1.loadClass("classloader.Dog");
14 System.out.println("className=" + loadClass.getName());
15 }
16 }
17
18 class Dog {
19 static {
20 System.out.println("Dog 的静态块初始化");
21 }
22 }

结果:

cl1.equals(cl2) ? true
className=classloader.Dog

说明 静态化部分未被执行

ClassLoader.loadClass("classloader.Dog");  方式加载 Example2

 1 package classloader;
2
3 public class Example {
4 public static void main(String[] args) throws ClassNotFoundException {
5
6 ClassLoader cl3 = Dog.class.getClassLoader();
7 Class<?> loadClass3 = cl3.loadClass("classloader.Dog");
8 System.out.println("className=" + loadClass3.getName());
9 }
10 }
11
12 class Dog {
13 static {
14 System.out.println("Dog 的静态块初始化");
15 }
16 }

结果:className=classloader.Dog

实例说明:使用Class.forName("com.mysql.jdbc.Driver"),会使得com.mysql.jdbc.Driver的静态化部分被执行,从而注册成功

JAVA 类显式加载的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (28) ------ 第五章 加载实体和导航属性之测试实体是否加载与显式加载关联实体

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-11  测试实体引用或实体集合是否加载 问题 你想测试关联实体或实体集合是否已经 ...

  2. 【EF学习笔记08】----------加载关联表的数据 显式加载

    显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...

  3. dll显式加载与隐式加载

    使用动态DLL有两种方法,一种是隐式链接,一种是显式链接,如果用loadlibrary就是显示链接,用lib就属于隐式链接. 两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样 ...

  4. Java类编译、加载、和执行机制

    Java类编译.加载.和执行机制 标签: java 类加载 类编译 类执行 机制 0.前言 个人认为,对于JVM的理解,主要是两大方面内容: Java类的编译.加载和执行. JVM的内存管理和垃圾回收 ...

  5. DLL动态库的创建,隐式加载和显式加载

    动态库的创建 打开VS,创建如下控制台工程,工程命名为DllTest: 在弹出的对话框中选择"DLL"后单击"完成"按钮: 在工程中新建DllTest.h和Dl ...

  6. java类什么时候加载?,加载类的原理机制是怎么样的?

    java类什么时候加载?,加载原理机制是怎么样的?   答: 很多人都不是很清楚java的class类什么时候加载在运行内存中,其实类加载的时间是发生在一下几种情况: 1.实例化对象时,就像sprin ...

  7. JAVA类的静态加载和动态加载以及NoClassDefFoundError和ClassNotFoundException

    我们都知道Java初始化一个类的时候可以用new 操作符来初始化, 也可通过Class.forName()的方式来得到一个Class类型的实例,然后通过这个Class类型的实例的newInstance ...

  8. tomcat热部署,更改java类不用重新加载context

    修改类后,tomcat热部署会重新加载整个项目的context,影响开发效率.网上查的大多数是将server的modules标签中Auto Reload项改为Disabled,但是没有效果. 使用以下 ...

  9. 【DLL】动态库的创建,隐式加载和显式加载(转)

    原文转自:https://blog.csdn.net/dcrmg/article/details/53437913

  10. Java类编译、加载、和执行

    https://www.cnblogs.com/fefjay/p/6305499.html

随机推荐

  1. day-3 路由底层源码

    1. 定义路由本质 比如在url.py定义以下路由,浏览器中输入http://192.168.0.1:8000/user/2003-04-21可以访问 意味着此url http://192.168.0 ...

  2. Pandas:删除最后一行

    解决方案 代码 效果展示 完整代码 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(12).reshape(3,4 ...

  3. 解读 --- System.Windows.Forms.Timer是前台线程吗?

    引言 今天同事问了我一个问题,System.Windows.Forms.Timer是前台线程还是后台线程,我当时想的是它是跟着UI线程一起结束的,应该是前台线程吧? 我确实没有仔细研究过他们的异同,所 ...

  4. JS语言里常见的随机函数示例,实验结果分布规律分析

    在JavaScript语言里有个 Math.random() 随机函数,用于生成指定范围内的随机数. Math.random()函数 根据官方的定义: Math.random() 函数返回一个浮点数, ...

  5. [故障处理]WindowsServer休眠后黑屏

    情况 Windows Server 2016休眠后无法被远程桌面,现场连接显示器也是黑屏.直连显示器的情况下,有时候长按 ctrl键能亮屏. 处理步骤 先扫描是否有系统文件损坏:Dism /Onlin ...

  6. 如何实现Excel中的多级数据联动

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间 ...

  7. AI 与智能化 API 治理的探索实践

    7月 Eolink 受邀参加 QECon 2023 全球软件质量&效能大会(北京站).Eolink CEO 刘昊臻,发表了主题为「AI 与智能化 API 治理的探索实践」的演讲,分享 Eoli ...

  8. 2.go语言基础类型漫游

    本篇前瞻 本篇是go语言的基础篇,主要是帮助大家梳理一下go语言的基本类型,注意本篇有参考go圣经,如果你有完整学习的需求可以看一下,另外,go语言的基本类型比较简单,介绍过程就比较粗暴. 基本类型 ...

  9. 浅谈API安全的应用

    ​ 理论基础 API它的全称是Application Programming Interface,也叫做应用程序接口,它定义了软件之间的数据交互方式.功能类型.随着互联网的普及和发展,API 从早期的 ...

  10. QA|Pycharm中的git分支提交冲突问题和解决|GIT

    前天,Pycharm中的git分支提交冲突了,原因是我PC上改了文件没有提交,笔记本又本地改代码,笔记本提交时就出现报错:提交拒绝,但pull也被拒绝,网上试了rebase等方法,均没得到解决,最终自 ...