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
随机推荐
- 使用react-test-renderer/shallow写测试
我的项目是采用react + ts来写的,项目中要写单元测试,于是采用了Jest库, 主要用的package有 react-test-renderer react-test-renderer/sha ...
- Node版本更新及切换
Node版本升级 # 清除npm缓存 npm cache clean -f # n模块是专门用来管理nodejs的版本,安装n模块 npm install -g n 1.Windows 由于n命令是在 ...
- zabbix 主动模式下报文分析
获取监控项列表 客户端发起请求 3次握手之后,请求监控项列表: {"request":"active checks","host":&quo ...
- BugKu:文件包含+php伪协议
这道题一进去发现一个超连接点击后发现跳转到了如下页面url如下/index.php?file=show.php,觉得这道题应该是一个php伪协议的应用 1 php://filter php://fil ...
- Spring Boot 最佳实践
本文翻译自国外论坛 medium,原文地址:https://medium.com/@raviyasas/spring-boot-best-practices-for-developers-3f3bdf ...
- [mysql]安全加固
前言 因等保安全的要求,需要对MySQL用户密码和登录策略进行安全加固,以满足以下需求: 密码至少8位,包含大小写字母.数字和特殊字符. 当密码登录失败一定次数后锁定账户. 密码90天过期 本文使用的 ...
- 如何实现Excel中的多级数据联动
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间 ...
- quarkus数据库篇之三:单应用同时操作多个数据库
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 一个应用同时连接多个数据库进行操作,这是常见 ...
- ceph分布式存储软件pgs inconsistent
Ceph是一个开源的分布式存储系统,它提供了高性能.高可靠性以及高扩展性.Ceph的设计理念是基于对象存储模型,通过将数据分割成多个对象并存储在不同的节点上,实现数据的分布式存储和访问. Ceph的核 ...
- Java读取某个文件夹下的所有文件(支持多级文件夹)
源码如下: package com.vocy.water.batch; import java.io.FileNotFoundException; import java.io.IOException ...