JAVA 类显式加载
类显式加载
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 类显式加载的更多相关文章
- 《Entity Framework 6 Recipes》中文翻译系列 (28) ------ 第五章 加载实体和导航属性之测试实体是否加载与显式加载关联实体
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-11 测试实体引用或实体集合是否加载 问题 你想测试关联实体或实体集合是否已经 ...
- 【EF学习笔记08】----------加载关联表的数据 显式加载
显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...
- dll显式加载与隐式加载
使用动态DLL有两种方法,一种是隐式链接,一种是显式链接,如果用loadlibrary就是显示链接,用lib就属于隐式链接. 两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样 ...
- Java类编译、加载、和执行机制
Java类编译.加载.和执行机制 标签: java 类加载 类编译 类执行 机制 0.前言 个人认为,对于JVM的理解,主要是两大方面内容: Java类的编译.加载和执行. JVM的内存管理和垃圾回收 ...
- DLL动态库的创建,隐式加载和显式加载
动态库的创建 打开VS,创建如下控制台工程,工程命名为DllTest: 在弹出的对话框中选择"DLL"后单击"完成"按钮: 在工程中新建DllTest.h和Dl ...
- java类什么时候加载?,加载类的原理机制是怎么样的?
java类什么时候加载?,加载原理机制是怎么样的? 答: 很多人都不是很清楚java的class类什么时候加载在运行内存中,其实类加载的时间是发生在一下几种情况: 1.实例化对象时,就像sprin ...
- JAVA类的静态加载和动态加载以及NoClassDefFoundError和ClassNotFoundException
我们都知道Java初始化一个类的时候可以用new 操作符来初始化, 也可通过Class.forName()的方式来得到一个Class类型的实例,然后通过这个Class类型的实例的newInstance ...
- tomcat热部署,更改java类不用重新加载context
修改类后,tomcat热部署会重新加载整个项目的context,影响开发效率.网上查的大多数是将server的modules标签中Auto Reload项改为Disabled,但是没有效果. 使用以下 ...
- 【DLL】动态库的创建,隐式加载和显式加载(转)
原文转自:https://blog.csdn.net/dcrmg/article/details/53437913
- Java类编译、加载、和执行
https://www.cnblogs.com/fefjay/p/6305499.html
随机推荐
- linux内核编译体验篇(一)
文章目录 一. 准备环境 二. 获取内核源码 三. 交叉编译工具链的配置 1. 博友们常用安装方法链接 2. 公司常用的交叉工具链使用方法 四. 内核解压以及如何打补丁 五. 内核基本配置 1. 编译 ...
- 原生poi实现模版导出
背景 我们公司是内网开发,外网jar包我的权限不够,所以easyexcel jar包无法使用,参考了easyexcel的填充思想,写了一个较简单的填充方法,如果直接用easyexcel的话,可以参考这 ...
- FireflySoft.LeaderElection增加基于ZooKeeper的Leader选举
FireflySoft.LeaderElection的第一个版本实现了基于Consul的Leader选举,考虑到ZooKeeper的一个常见用途也是选主,所以此类库把ZooKeeper也集成了进来.并 ...
- 【译】如何在 Visual Studio 中调试异步代码
虽然异步代码可以提高程序的整体吞吐量,但异步代码仍然无法免除错误!当潜在的死锁.模糊的错误消息以及查找导致 Bug 的 Task 时,编写异步代码会使调试更加困难.幸运的是,Visual Studio ...
- Bootstrap使用方法
中文文档:https://www.bootcss.com/ 使用方式: 1.选择对应的文档: 2.网站会自动跳转,一般选择Bootstrap3中文文档: 3.点击入门,下拉找到基础模板,复制代码到 ...
- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-4_w0c665/PyQt5/
错误: 解决方式:输入一下命令 1 pip3 install --upgrade setuptools 2 python3 -m pip install --upgrade pip 输入命令: 1 p ...
- centos7安全防护配置
前言 这段时间公司的服务器在做等保验证,对服务器的做了一些安全防护配置,留此记录. 操作系统版本:centos 7.6 密码有效周期 相关文件:/etc/login.defs 参数 说明 默认值 修改 ...
- 部署安装maven和mvnd
前言 maven是常见的java构建工具,优点是稳定可靠,缺点是构建太慢,maven-mvnd是maven的强化版,致力于提高构建速度,默认情况下,mvnd 使用多核CPU并行构建. 常见的java构 ...
- 个人用C#编写的壁纸管理器 - 开源研究系列文章
今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器. 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码.如果对读者有借鉴参考作用就更好了 ...
- MySQL面试题全解析:准备面试所需的关键知识点和实战经验
MySQL有哪几种数据存储引擎?有什么区别? MySQL支持多种数据存储引擎,其中最常见的是MyISAM和InnoDB引擎.可以通过使用"show engines"命令查看MySQ ...