易截截图软件、单文件、免安装、纯绿色、仅160KB

深入探讨 Java 类加载器

类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用的开发人员不需要直接同类加载器进行交互。Java 虚拟机默认的行为就已经足够满足大多数情况的需求了。不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException 和 NoClassDefFoundError 等异常。本文将详细介绍 Java 的类加载器,帮助读者深刻理解 Java 语言中的这个重要概念。下面首先介绍一些相关的基本概念。
类加载器基本概念
顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。
基本上所有的类加载器都是 java.lang.ClassLoader 类的一个实例。下面详细介绍这个 Java 类。
java.lang.ClassLoader 类介绍
java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class 类的一个实例。除此之外,ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。为了完成加载类的这个职责,ClassLoader 提供了一系列的方法,比较重要的方法如 表 1 所示。关于这些方法的细节会在下面进行介绍。
表 1. ClassLoader 中与加载类相关的方法
方法说明
getParent()
返回该类加载器的父类加载器。
loadClass(String name)
加载名称为 name 的类,返回的结果是 java.lang.Class 类的实例。
findClass(String name)
查找名称为 name 的类,返回的结果是 java.lang.Class 类的实例。
findLoadedClass(String name)
查找名称为 nam


相关文档:

java多線程的實例

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.*;
public class ThreadDemo extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public ThreadDemo() {
JButton btn = new JButton("Click me");
btn.addActionL ......

Java文件中为什么会有serialVersionUID


一些java类中为什么需要重载 serialVersionUID 属性。
在Java中,软件的兼
容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下,
用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息。
serialVersionUID
来解 ......

JAVA读书笔记(一)

1.变量:
对于基本类型的全局变量,若没有初始化,系统会自动初始化为该类型的初始值;而对于局部变量,则必须显示的进行初始化。
2.常量:
final int M_Max=111;
final表示只能给变量M_MAX赋值一次,赋值之后,M_MAX的值就不可以重新赋值。所赋的值可以是一个表达式,也可以是一个具体的值。
3.类常量:
static fina ......

Java网络编程学习笔记之Socket(一)

    在客户/服务器通信模式中,客户端主动创建与服务器连接的Socket,服务器收到客户端的连接请求,也创建了与客户端连接的Socket。
    客户端主动创建Socket时候,需要做下面一些事情:
    1. 构造Socket.
    2. 设定等待建立连接的超时时间
&nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号