类加载学习
隐式动态性
也就是说当自己的程序用到NEW关键字时,就会载入需要载入的类....
显示的动态性
1. 一个是由java.lang.Class 的forName()方法
2.是由java.lang.ClassLoader 的loadClass()方法
写例子让自己理解下;
- interface Assembly{
- public void start();
- }
- public class Main{
- public static void main (String[] args) throws Exception{
- Class c=Class.forName(args[0]);
- Object o=c.newInstance();
- Assembly a=(Assembly) o;
- a.start();
- }
- }
- class A implements Assembly{
- public void start(){
- System.out.println("class a 使用");
- }
- }
- class B implements Assembly{
- public void start(){
- System.out.println("class b 使用");
- }
- }
- class C implements Assembly{
- public void start(){
- System.out.println("class c 使用");
- }
- }
动态载入,用到哪个类的时候就载入哪个类.
执行 java -verbose:class Main
- [Loaded Main from file:/C:/wang/]
- [Loaded java.lang.IndexOutOfBoundsException from shared objects file]
- [Loaded java.lang.ArrayIndexOutOfBoundsException from shared objects file]
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
- at Main.main(Main.java:6)
- [Loaded java.lang.Shutdown from shared objects file]
- [Loaded java.lang.Shutdown$Lock from shared objects file]
抛出异常了,界限异常.. 没有输入命令行参数......
接着 java -verbose:class Main A
- [Loaded java.security.cert.Certificate from shared objects file]
- [Loaded Main from file:/C:/wang/]
- [Loaded Assembly from file:/C:/wang/]
- [Loaded A from file:/C:/wang/]
- class a 使用
- [Loaded java.lang.Shutdown from shared objects file]
- [Loaded java.lang.Shutdown$Lock from shared objects file]
先载入主类.. 接口...
载入A类,即可以在不修改主类的情况下增加新的功能..(我没把类分开写.....)
如果写个类D继承了类A ... 会如何..
- class D extends A implements Assembly{
- public void start(){
- System.out.println("class d extends a implements assembly 使用して");
- }
- }
接着: java -verbose:class Main D
- [Loaded Main from file:/C:/wang/]
- [Loaded Assembly from file:/C:/wang/]
- [Loaded A from file:/C:/wang/]
- [Loaded D from file:/C:/wang/]
- class d extends a implements assembly 使用して
- [Loaded java.lang.Shutdown from shared objects file]
- [Loaded java.lang.Shutdown$Lock from shared objects file]
哦. 是先载入了父类的文件,再载入了子类.....
如果D->C->B->A 依此继承....
- [Loaded Main from file:/C:/wang/]
- [Loaded Assembly from file:/C:/wang/]
- [Loaded A from file:/C:/wang/]
- [Loaded B from file:/C:/wang/]
- [Loaded C from file:/C:/wang/]
- [Loaded D from file:/C:/wang/]
- class d extends a implements assembly 使用して
- [Loaded java.lang.Shutdown from shared objects file]
- [Loaded java.lang.Shutdown$Lock from shared objects file]
就按循序载入....
相关推荐
《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...
类加载器 ClassLoader 字节码校验器 解释执行器 (翻译)逐行的解释执行代码 2.安全 健壮 3.面向对象 面向过程: 程序:函数+变量 (算法+数据结构) 面向对象: 如:SmallTalk 程序:对象和对象相互之间的“通讯” ...
15、动态菜单加载思路 16、Vue3中的数据加载 17、Promise 18、Vue3和Vue2的差异 19、Vue3中自定义插件 20、Vue3自定义指令 21、Vite 22、工作流workflow 23、流程图绘制 24、Flowable 源码编译 25、流程定义与流程...
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...
动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...
动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
8.2 第二步:使用java类生成mapper文件: 72 8.3 第三步:拷贝生成的mapper文件到工程中指定的目录中 73 8.3.1 Mapper.xml 73 8.3.2 Mapper.java 73 8.3.3 第四步Mapper接口测试 73 8.4 逆向工程注意事项 74 8.4.1 ...
(十七) Swing 学习笔记 108 Swing API 包括18个公共包: 108 例程1.1 HelloWorldSwing.java 109 例程2.2 HelloWorldJFrame.java 110 (十八) 动态加载文件树的java程序 111 FileSystemTree.java源代码 112 //内部类 ...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...
本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...