java类加载器_01

Posted 自朗活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java类加载器_01相关的知识,希望对你有一定的参考价值。

1、概念:

  顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。

2、

  java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class类的一个实例。除此之外,ClassLoader还负责加载 Java 应用所需的资源,如图像文件和配置文件等。

  Class.forName是一个静态方法,同样可以用来加载类。该方法有两种形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。第一种形式的参数 name表示的是类的全名;initialize表示是否初始化类;loader表示加载时使用的类加载器。第二种形式则相当于设置了参数 initialize的值为 trueloader的值为当前类的类加载器。Class.forName的一个很常见的用法是在加载数据库驱动的时候。如Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance()用来加载 Apache Derby 数据库的驱动。

 

3、代码:

  

//01
Method[] mds = MethodUtils.class.getMethods();
//02
Class clas = Class.forName("com.zilanghuo.loader.MethodUtils");
Object o = clas.newInstance();

4、调用invoke方法:

 

//obj:对象实例,args:方法参数值,返回值为方法的返回值
Object    invoke(Object obj, Object... args)
Invokes the underlying method represented by this Method object, on the specified object with the specified parameters.

 

以上是关于java类加载器_01的主要内容,如果未能解决你的问题,请参考以下文章

JAVA基础_类加载器

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

类加载机制的学习1______类加载器

java 类加载器   双亲委派机制

Java虚拟机(JVM)-- 类加载器和双亲委派机制

JVM_11 类加载与字节码技术 (类加载与类的加载器)