类显式加载

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. Django message组件

    使用message组件要在seetings中配置 ①INSTALLED_APPS   (项目需要什么功能都放在这 既可以有数据库,又可以写代码,html文件,和自己写的APP一个道理) ②MIDDLE ...

  2. 部署 rsyslog 日志服务

    ubuntu 服务端 + Centos 客户端 参考文档: ubuntu 20.04 搭建 rsyslog 服务器 CentOS7下搭建Rsyslog Server记录远程主机系统日志

  3. 使用MkDocs搭建个人博客

    使用MkDocs搭建个人博客 接触编程已经好几年了,阅读了无数大佬的博客文章,但是从来没有自己写过.这其中最重要的原因当然是懒惰,觉得写博客太费时间了,对自己的帮助也不大.可是如今发现自己的记性越来越 ...

  4. 从MybatisPlus回归Mybatis

    从MybatisPlus回归Mybatis 之前写项目一直习惯使用MyBatisPlus,单表查询很方便:两张表也很方便,直接业务层处理两张表的逻辑.但什么都图方便只会害了你. 但连接的表比较复杂的时 ...

  5. WPF实现跳动的字符效果

    本文将介绍一个好玩但实际作用可能不太大的动画效果:跳动的字符.为了提高动画效果的可重用性以及调用的灵活性,通过Behavior实现跳动的字符动画.先看下效果: 技术要点与实现 通过TextEffect ...

  6. Jenkins用户管理(二):不同用户分配不同的任务访问权限

    需求:不同用户访问到不同的Jenkins任务. 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入[系统管理]-[插件管理]-[可用插件],搜索Role ...

  7. 记录一次解决数据库连接池连接泄露BUG

    1 BUG现象 系统并发请求,系统停滞无法使用,所有接口都是无法与后端进行交互的状态,系统并没有宕机 2 BUG的业务流程 插入分数方法 涉及插入表ABCD 加了声明式事务 查询分数方法 涉及表ABC ...

  8. 要调用API接口获取商品数据,首先需要了解该API的文档和规范

    ​ 要调用API接口获取商品数据,首先需要了解该API的文档和规范.大多数API都需要使用API密钥进行身份验证,因此您需要先注册API提供商,并从他们那里获取API密钥.以下是一些通用的步骤: 1. ...

  9. 通过API接口获取到数据后的使用方法以及储存方法

    API接口是许多应用程序和服务所必需的,可以将多个应用程序连接起来,允许不同应用程序之间的数据共享.在本文中,我们将探讨如何使用API接口获取数据,以及如何储存这些数据. 1.使用API接口获取数据 ...

  10. QA|selenium在send_keys时报错dict object has no attribute ''|UI自动化测试

    Q:selenium在send_keys时报错dict object has no attribute 'send_keys',如下图 增加了print(type(e1))发现确实是字典类型,怪了,按 ...