1.创建一个DLL 类库,并新建一个窗体类,这个直接在vs上操作就好 2. 建立一个Testassembly工程 新建一个测试类 namespace Testassembly { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string ss = AppDomain.Curren…
无涯 原文 从 dll 程序集中动态加载窗体 [原创] 昨天晚上花了一晚上时间写了一个从程序集中动态加载窗体的程序.将任何包含窗体的代码编译成 dll 文件,再把 dll 文件拷贝到本程序的目录下,本程序运行时即可动态检查到 dll 文件中的窗体,将窗体类的类型在程序菜单中显示出来,点击菜单即可运行对应的窗体. 本程序主要用到了 Assembly 类动态加载程序集,再得到程序集中包含类的 Type 类型,动态生成类实例,动态调用类方法.个人觉得这是一种提供高度松耦合,可随意扩展的程序结构框架,希…
说到反射,首先说类的加载器. 类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载: 就是指将class文件读入内存,并为之创建一个Class对象. 任何类被使用时系统都会建立一个Class对象. 连接: 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据中的符号引用替换为直接引用 初始化: 就是我们以前讲过的初始化步骤 类初始化时机: 创建类的实…
类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化这三个步骤来实现对这个类进行初始化. 加载: 就是指将class文件加载进入内存,并为之创建一个Class对象 任何类被使用时,系统都会创建一个Class对象 连接: 验证: 是否有正确的内部结构,并且和其他类协调一致 准备: 负责为类的静态成员分配内存,并设置默认初始化值 解析: 将类的二进制数据中的符号引用替换为直接引用 初始化:就是以前我们讲过的初始化步骤 类初始化的时机: 创建类的实例 访问类的静…
Day15 反射 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l 加载 就是指将class文件读入内存,并为之创建一个Class对象. 任何类被使用时系统都会建立一个Class对象 l 连接 验证是否有正确的内部结构,并和其他类协调一致 准备负责为类的静态成员分配内存,并设置默认初始化值 解析将类的二进制数据中的符号引用替换为直接引用 l 初始化 就是我们以前讲过的初始化步骤 1.2 反射概述 Java反射机制…
目录 1类的加载连接和初始化 1.1类的加载过程 1.2类的加载器 1.2.1类的加载机制 1类的加载连接和初始化 1.1类的加载过程 类的加载过程简单为分为三步:加载->连接->初始化 1.2类的加载器 1.2.1类的加载机制 全盘加载: 使用一个类负责加载一个Class文件,该Class依赖和负责的Class都由这个类加载器负责加载 父类加载: 先让这个类的父类加载器加载这个类,只有当这个父加载器无法加载时候,才从自己的类路径中加载该类 缓存机制: 所有被加载过的类都会被缓存,当程序需要某…
接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它. package chapter18; public class Hello { public static void main(String[] args){ for(String arg:args){ System.out.println("运行Hello的参数:" + arg); } } } 无须编译该Hello.java,可以直接使用如下命令来运行该Hello.java程…
1 本文概要 本章介绍Java类的加载.连接和初始化的深入知识,并重点介绍Java反射相关的内容.本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行.而且Java类加载器除了根加载器之外,其他类加载器都是使用Java语言编写的,所以我们完全可以开发自己的类加载器,通过使用自定义的类加载器,完成一些特定的功能. 本章重点介绍java.lang.reflect包下的接口和类,包括Class.Method.Field.Constructor和Array,这些类分别代表类.方法.属性.…
1.类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * 加载 * 就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. * 连接 * 验证 是否有正确的内部结构,并和其他类协调一致 * 准备 负责为类的静态成员分配内存,并设置默认初始化值 * 解析 将类的二进制数据中的符号引用替换为直接引用 * 初始化 就是我们以前讲过的初始化…
类的使用分为三个步骤: 类的加载->类的连接->类的初始化 一.类的加载 当程序运行的时候,系统会首先把我们要使用的Java类加载到内存中.这里加载的是编译后的.class文件 每个类加载到内存中,会创建一个对应的Class对象.这个Class对象保存了这个类有哪些成员(数据成员,方法成员) 注意:这里只有在某个Java类被使用的时候,才会被加载 加载时机:任何用到这个类的时候.(实例化,使用里面的静态静态成员....) 二.类加载器(JVM里面的一个东西) 作用:将.class文件(可能在磁…