加载一个类,class.forname和classloader有什么区别

164 阅读1分钟

在Java中,加载一个类有两种方式:使用Class.forName和使用ClassLoader。它们之间的主要区别是:

  1. Class.forName方法会在加载类的同时对其进行初始化,而ClassLoader只是加载类,不会立即初始化它。
  2. Class.forName方法使用的是系统类加载器(即ClassLoader.getSystemClassLoader()),而ClassLoader可以使用不同的类加载器。
  3. Class.forName方法需要指定类名的全限定名,而ClassLoader可以通过指定类文件的路径或文件名来加载类。
  4. Class.forName方法可以触发静态代码块的执行,而ClassLoader不会触发。

总的来说,ClassLoader提供了更灵活的类加载方式,可以使用自定义的类加载器来加载类,而Class.forName适用于需要在加载时就执行类的静态代码块的情况。