当前位置: 首页 > 教程 > Java.lang >

Java.lang ClassLoader

精华
小牛编辑
126浏览
2023-03-14

1 Java.lang ClassLoader介绍

java.lang.ClassLoader 类是一个对象,它负责加载类。这个类是一个抽象类。它可用于通过安全管理器,以指示安全域。

2 Java.lang ClassLoader声明

public abstract class ClassLoader
  extends Object

3 Java.lang ClassLoader方法

方法 描述
void clearAssertionStatus() 此方法设置这个类加载器的默认断言状态设置为false,并放弃与类加载器相关的任何包默认值或类断言状态设置。
protected Class<?> defineClass(String name, byte[] b, int off, int len) 此方法将字节数组转换为Class类的一个实例。
protected Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) 此方法将字节数组转换为Class类的一个实例,一个可选ProtectionDomain
protected Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) 此方法转换ByteBuffer为Class类的一个实例,并带一个可选的ProtectionDomain。
protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) 此方法在这个类加载器定义了一个包。
protected Class<?> findClass(String name) 此方法找到的类使用指定的二进制名称。
protected String findLibrary(String libname) 此方法返回的本地库的绝对路径名。
protected Class<?> findLoadedClass(String name) 此方法返回类,如果这部分代码已经记录由Java虚拟机作为一类具有二进制名称的启动加载器给定二进制名称。
protected URL findResource(String name) 此方法找到具有给定名称的资源。
protected Enumeration<URL> findResources(String name) 此方法返回表示所有具有给定名称的资源的URL对象的枚举。
protected Class<?> findSystemClass(String name) 此方法找到的类使用指定的二进制名称,如果有必要加载它。
protected Package getPackage(String name) 此方法返回一个已经被这个类装载器,或任何其祖先定义的包。
protected Package[] getPackages() 此方法返回所有由这个类装载器和它的祖先定义的包。
ClassLoader getParent() 此方法返回父类加载器委派。
URL getResource(String name) 此方法找到具有给定名称的资源。
InputStream getResourceAsStream(String name) 该方法用于读出指定的资源返回一个输入流。
Enumeration<URL> getResources(String name) 此方法找到的所有资源与给定的名字。
static ClassLoader getSystemClassLoader() 此方法返回系统类加载器委派。
static URL getSystemResource(String name) 此方法找到的用来加载类的搜索路径指定名称的资源。
static InputStream getSystemResourceAsStream(String name) 此方法是打开用于读取,从用来加载类的搜索路径指定名称的资源。
static Enumeration<URL> getSystemResources(String name) 此方法找到的用来加载类的搜索路径指定名称的所有资源。
Class<?> loadClass(String name) 此方法加载类指定二进制名称。
protected Class<?> loadClass(String name, boolean resolve) 此方法加载类指定二进制名称。
protected void resolveClass(Class<?> c) 此方法连接指定的类。
void setClassAssertionStatus(String className, boolean enabled) 此方法设置在此类加载器及其包含的命名的顶级阶层和任何嵌套类所需的断言状态。
void setDefaultAssertionStatus(boolean enabled) 此方法设置这个类加载器的默认断言状态。
void setPackageAssertionStatus(String packageName, boolean enabled) 此方法设置为指定包的包默认断言状态。
protected void setSigners(Class<?> c, Object[] signers) 此方法设置一个类的签名。

4 Java.lang ClassLoader案例

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */

//import statements  
import java.lang.*;  
  
public class ClassgetClassLoaderExample1 {  
  
   public static void main(String[] args) {  
  
      try {  
          
         Class clsobj = Class.forName("Class.ClassgetClassLoaderExample1");  
  
         ClassLoader ClsLoader = clsobj.getClassLoader();  
  
         if (ClsLoader == null) {  
            System.out.println("System class was used.");  
         } else {  
            // returns the class loader  
            Class loaderCls = ClsLoader.getClass();  
  
            System.out.println("Associated with ClassLoader = " +loaderCls.getName());  
         }  
      } catch (ClassNotFoundException e) {  
         System.out.println(e.toString()); //coverting exception object to string and printing it  
      }  
   }  
}

输出结果为:

Associated with ClassLoader = sun.misc.Launcher$AppClassLoader