⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classloader.html

📁 j2se5-api-zh,java文档的中文版本
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!--NewPage--><HTML><HEAD><!-- Generated by javadoc (build 1.5.0_03) on Wed Nov 02 09:48:19 CST 2005 --><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>ClassLoader (Java 2 Platform SE 5.0)</TITLE><META NAME="keywords" CONTENT="java.lang.ClassLoader class"><LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"><SCRIPT type="text/javascript">function windowTitle(){    parent.document.title="ClassLoader (Java 2 Platform SE 5.0)";}</SCRIPT><NOSCRIPT></NOSCRIPT></HEAD><BODY BGCOLOR="white" onload="windowTitle();"><!-- ========= START OF TOP NAVBAR ======= --><A NAME="navbar_top"><!-- --></A><A HREF="#skip-navbar_top" title="跳过导航链接"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_top_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">  <TR ALIGN="center" VALIGN="top">  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>概述</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>类</B></FONT>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ClassLoader.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A>&nbsp;</TD>  </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup>&nbsp;2&nbsp;Platform<br>Standard&nbsp;Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">&nbsp;<A HREF="ClassFormatError.html" title="java.lang 中的类"><B>上一个类</B></A>&nbsp;&nbsp;<A HREF="ClassNotFoundException.html" title="java.lang 中的类"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">  <A HREF="../../index.html@java_2Flang_2FClassLoader.html" target="_top"><B>框架</B></A>  &nbsp;&nbsp;<A HREF="ClassLoader.html" target="_top"><B>无框架</B></A>  &nbsp;&nbsp;<SCRIPT type="text/javascript">  <!--  if(window==top) {    document.writeln('<A HREF="../../allclasses-noframe.html"><B>所有类</B></A>');  }  //--></SCRIPT><NOSCRIPT>  <A HREF="../../allclasses-noframe.html"><B>所有类</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">  摘要:&nbsp;嵌套&nbsp;|&nbsp;字段&nbsp;|&nbsp;<A HREF="#constructor_summary">构造方法</A>&nbsp;|&nbsp;<A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息:&nbsp;字段&nbsp;|&nbsp;<A HREF="#constructor_detail">构造方法</A>&nbsp;|&nbsp;<A HREF="#method_detail">方法</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_top"></A><!-- ========= END OF TOP NAVBAR ========= --><HR><!-- ======== START OF CLASS DATA ======== --><H2><FONT SIZE="-1">java.lang</FONT><BR>类 ClassLoader</H2><PRE><A HREF="Object.html" title="java.lang 中的类">java.lang.Object</A>  <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><B>java.lang.ClassLoader</B></PRE><HR><DL><DT><PRE>public abstract class <B>ClassLoader</B><DT>extends <A HREF="Object.html" title="java.lang 中的类">Object</A></DL></PRE><P>类加载器是负责加载类的对象。<tt>ClassLoader</tt> 类是一个抽象类。如果给定类的<a href="#name">二进制名称</a>,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的&ldquo;类文件&rdquo;。<p> 每个 <A HREF="Class.html" title="java.lang 中的类"><CODE><tt>Class</tt></CODE></A> 对象都包含一个对定义它的 <tt>ClassLoader</tt> 的<A HREF="Class.html#getClassLoader()"><CODE>引用</CODE></A>。<p> 数组类的 <tt>Class</tt> 对象不是由类加载器创建的,而是由 Java 运行时根据需要自动创建。数组类的类加载器由 <A HREF="Class.html#getClassLoader()"><CODE>Class.getClassLoader()</CODE></A> 返回,该加载器与其元素类型的类加载器是相同的;如果该元素类型是基本类型,则该数组类没有类加载器。<p> 应用程序需要实现 <tt>ClassLoader</tt> 的子类,以扩展 Java 虚拟机动态加载类的方式。<p> 类加载器通常由安全管理器使用,用于指示安全域。<p> <tt>ClassLoader</tt> 类使用委托模型来搜索类和资源。每个 <tt>ClassLoader</tt> 实例都有一个相关的父类加载器。需要查找类或资源时,<tt>ClassLoader</tt> 实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。虚拟机的内置类加载器(称为 "bootstrap class loader")本身没有父类加载器,但是可以将它用作 <tt>ClassLoader</tt> 实例的父类加载器。<p> 通常情况下,Java 虚拟机以与平台有关的方式,从本地文件系统中加载类。例如,在 UNIX 系统中,虚拟机从 <tt>CLASSPATH</tt> 环境变量定义的目录中加载类。<p> 然而,有些类可能并非源自一个文件;它们可能源自其他来源(如网络),也可能是由应用程序构造的。<A HREF="ClassLoader.html#defineClass(java.lang.String, byte[], int, int)"><CODE><tt>defineClass</tt></CODE></A> 方法将一个字节数组转换为 <tt>Class</tt> 类的实例。这种新定义的类的实例可以使用 <A HREF="Class.html#newInstance()"><CODE><tt>Class.newInstance</tt></CODE></A> 来创建。<p> 类加载器所创建对象的方法和构造方法可以引用其他类。为了确定引用的类,Java 虚拟机将调用最初创建该类的类加载器的 <A HREF="ClassLoader.html#loadClass(java.lang.String)"><CODE><tt>loadClass</tt></CODE></A> 方法。<p> 例如,应用程序可以创建一个网络类加载器,从服务器中下载类文件。示例代码如下所示: <blockquote><pre>   ClassLoader loader&nbsp;= new NetworkClassLoader(host,&nbsp;port);   Object main&nbsp;= loader.loadClass(&quot;Main&quot;, true).newInstance();         &nbsp;.&nbsp;.&nbsp;. </pre></blockquote><p> 网络类加载器子类必须定义方法 <A HREF="ClassLoader.html#findClass(java.lang.String)"><CODE><tt>findClass</tt></CODE></A> 和 <tt>loadClassData</tt>,以实现从网络加载类。下载组成该类的字节后,它应该使用方法 <A HREF="ClassLoader.html#defineClass(byte[], int, int)"><CODE><tt>defineClass</tt></CODE></A> 来创建类实例。示例实现如下: <blockquote><pre>     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             &nbsp;.&nbsp;.&nbsp;.         }     } </pre></blockquote><h4> <a name="name">二进制名称</a> </h4><p> 按照《<a href="../../../../../../../../java.sun.com/docs/books/jls/default.htm">Java Language Specification</a>》的定义,任何作为 <A HREF="String.html" title="java.lang 中的类"><CODE>String</CODE></A> 类型参数传递给 <tt>ClassLoader</tt> 中方法的类名称都必须是一个二进制名称。<p> 有效类名称的示例包括: <blockquote><pre>   "java.lang.String"   "javax.swing.JSpinner$DefaultEditor"   "java.security.KeyStore$Builder$FileBuilder$1"   "java.net.URLClassLoader$3$1" </pre></blockquote><P><P><DL><DT><B>从以下版本开始:</B></DT>  <DD>1.0</DD><DT><B>另请参见:</B><DD><A HREF="ClassLoader.html#resolveClass(java.lang.Class)"><CODE>resolveClass(Class)</CODE></A></DL><HR><P><!-- ======== CONSTRUCTOR SUMMARY ======== --><A NAME="constructor_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>构造方法摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected </CODE></FONT></TD><TD><CODE><B><A HREF="ClassLoader.html#ClassLoader()">ClassLoader</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用方法 <A HREF="ClassLoader.html#getSystemClassLoader()"><CODE><tt>getSystemClassLoader()</tt></CODE></A> 返回的 <tt>ClassLoader</tt> 创建一个新的类加载器,将该加载器作为父类加载器。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected </CODE></FONT></TD><TD><CODE><B><A HREF="ClassLoader.html#ClassLoader(java.lang.ClassLoader)">ClassLoader</A></B>(<A HREF="ClassLoader.html" title="java.lang 中的类">ClassLoader</A>&nbsp;parent)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用指定的、用于委托操作的父类加载器创建新的类加载器。</TD></TR></TABLE>&nbsp;<!-- ========== METHOD SUMMARY =========== --><A NAME="method_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>方法摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;void</CODE></FONT></TD><TD><CODE><B><A HREF="ClassLoader.html#clearAssertionStatus()">clearAssertionStatus</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将此类加载器的默认断言状态设置为 <tt>false</tt>,并放弃与此类加载器关联的所有默认包或类断言状态设置。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -