java开发笔记——classLoader
来源:互联网 发布:淘宝鹿与飞鸟 编辑:程序博客网 时间:2024/05/29 12:24
翻译:
class loader 是一个负责loading class的对象,ClassLoader是一个抽象类。当传入一个class的名称时,class loader会产生创建一个class的声明的数据,一个典型的策略是把传入的class名称转化成文件名称,然后从文件系统中查找到叫这个文件名的“class file“。
每一个Class都包含getClassLoader的引用,这个方法是在ClassLoader中定义它的。
Array classes 的对象不是由Class Loader创建的,而是由Java 运行时自动创建的。array class的class loader 是由array所属类型的getClassLoader返回的。如果其所属类型是基本类型,这个array class 就没有 class loader。
应用可以通过实现ClassLoader的subclassss中的接口,来拓展Java虚拟机动态加载类的功能。
class loaders 典型地用于安全管理器表明安全域。(不太懂,坐等大牛讲解)
ClassLoder 用委托模式来查到class和resource,每个ClassLoader的实例都关联一个父 class loader。当获取到一个查找class或者resource的请求时,ClassLoader的实例会在自己查找前先将这个请求委托给父class loader。虚拟机的内置的class loader ,被称为 “bootstrap class loader”,它本身没有父class loader,而作为class loader 实例的父 class loader。
通常地,java虚拟机配合不同平台文件系统的获取文件的习惯来load class。比如,在unix系统中,虚拟机从 ClassPath环境变量中定义的的目录来load class。
但是,一些class不是从文件系统中产生的,一些其他的渠道,比方说network,或者他们时应用构建的。方法defineClass(String,byte[],int,int) 把字节数组转化成class 实例,新定义的class可以用方法newInstance 来创建。
class loader 创建的一个Class的方法和构造奇可能引用其他class。为了定义这些应用的class,java虚拟机提供了loadClass方法来生成class。
举例说,应用要创建一个network的class loader从远端的server下载class 文件,代码如下:
ClassLoader loader= new NetworkClassLoader(host,port);
Object main= loader.loadClass(“Main”, true).newInstance();
- class NetworkClassLoader extends ClassLoader {
- String host;
- int port;
* - public Class findClass(String name) {
- byte[] b = loadClassData(name);
- return defineClass(name, b, 0, b.length);
- }
* - private byte[] loadClassData(String name) {
- // load the class data from the connection
- }
- }
- java开发笔记——classLoader
- Java笔记——Class.getResourceAsStream和ClassLoader.getResourceAsStream
- Java中ClassLoader笔记
- Java基础——ClassLoader
- JAVA——ClassLoader详解
- 【JAVA笔记——术】Java ClassLoader类加载机制详解
- java ClassLoader笔记(一)
- 深入Java虚拟机笔记---ClassLoader
- java类加载器——ClassLoader
- 我的Java开发学习之旅------>JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
- 【转】 java ClassLoader笔记(一)
- java中Class和ClassLoader学习笔记
- JVM学习笔记5—类加载器(classloader)
- ClassLoader笔记
- Classloader笔记
- ClassLoader笔记
- Java知识总结——ClassLoader工作原理
- java反射——Class.forName和classloader的区别
- 简单选择排序
- java中50个关键字总结经验和分享里面的定义
- HDU 2181 哈密顿绕行世界问题
- 解析php curl_setopt 函数的相关应用及介绍
- LeetCode题解:excel-sheet-column-number
- java开发笔记——classLoader
- 《Cocos2d-x实战 Lua卷》上线了
- GRE质材和渲染:1.Ogre渲染目标
- 第二周项目四
- 学习使用:before和:after伪元素
- 项目搭建之路(下)
- 拷贝构造函数
- 设计模式-单例模式(singleton pattern)
- 2015的反思