鸿蒙OS开发文档 第52页

鸿蒙OS Deque

Deque public interface Deque<E> extends Queue<E> 支持两端元素插入和移除的线性集合。 名称 deque 是“双端队列”的缩写,通常发音为“deck”。 大多数 Deque 实现对其可能包含的元素数量没有固定限制,但此接口支持容量受限的双端队列以及没有固定大小限制的双端队列。 该接口定义了访问双端队列两端元素的方法。 提供了插入、删除和检查元素的方法。 这些方法中的每一种都以两种形式存在:一种在操作失败时抛出异常,另一种返回一个特殊值(null 或 false,取决于操作)。 后一种形式的插入操作是专门为容量受限的 Deque 实现而设计的; 在大多数实现中,插入操作不会失败。 下表总结了上述十二种方法: 该接口扩展了 Queue 接口。 当双端队列用作队列时,会产生 FIFO(先进先出)行为。 元素在双端队列的末尾添加并从开头删除。 从 Queue 接口继承的方法与 Deque 方法完全等价,如下表所示: 双端队列也可以用作 LIFO(后进先出)堆栈。应优先使用此接口而不是旧的 Stack 类。当双端队列用作堆栈时,从双端队列的开头推送和弹出元素。 Stack 方法完全等同于 Deque 方法,如下表所示: 请注意,当双端队列用作队列或堆栈时,peek 方法同样有效;在任何一种情况下,元素都是从双端队列的开头绘制的。 该接口提供了两种移除内部元素的方法,removeFirstOccurrence 和 removeLastOccurrence。 与 List 接口不同,此接口不支持对元素的索引访问。 虽然没有严格要求 Deque 实现禁止插入 null 元素,但强烈鼓励他们这样做。强烈建议允许使用 null 元素的任何 Deque 实现的用户不要利用插入 null 的能力。这是因为 null 被各种方法用作特殊返回值来指示双端队列为空。 Deque 实现通常不定义 equals 和 hashCode 方法的基于元素的版本,而是从类 Object 继承基于身份的版本。 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型 方法 描述 boolean add(E e) 如果可以在不违反容量限制的情况下立即将指定元素插入此双端队列表示的队列中(换句话说,在此双端队列的尾部),则在成功时返回 true 并在当前没有可用空间时抛出 IllegalStateException . void addFirst(E e) 如果可以在不违反容量限制的情况下立即插入指定元素,则在此双端队列的前面插入指定元素,如果当前没有可用空间,则抛出 IllegalStateException。 void addLast(E e) 如果可以在不违反容量限制的情况下立即插入指定元素,则在此双端队列末尾插入指定元素,如果当前没有可用空间,则抛出 IllegalStateException。 boolean contains(Object o) 如果此双端队列包含指定元素,则返回 true。 IteratorE descendingIterator() 以相反的顺序返回此双端队列中元素的迭代器。 E element() 检索但不删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素)。 E getFirst() 检索但不删除此双端队列的第一个元素。 E getLast() 检索但不删除此双端队列的最后一个元素。 IteratorE iterator() 以正确的顺序返回此双端队列中元素的迭代器。 boolean offer(E e) 如果可以在不违反容量限制的情况下立即执行此操作,则将指定元素插入此双端队列表示的队列中(换句话说,在此双端队列的尾部),成功时返回 true,如果当前没有可用空间则返回 false。 boolean offerFirst(E e) 在此双端队列的前面插入指定元素,除非它违反容量限制。 boolean offerLast(E e) 在此双端队列末尾插入指定元素,除非它违反容量限制。 E peek() 检索但不删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回 null。 E peekFirst() 检索但不删除此双端队列的第一个元素,如果此双端队列为空,则返回 null。...

鸿蒙OS Comparator

Comparator @FunctionalInterface public interface Comparator<T> 一个比较函数,它对某些对象集合进行总排序。比较器可以传递给排序方法(例如 Collections#sort(List,Comparator) 或 [Arrays#sort(Object],Comparator)),以允许精确控制排序顺序。比较器还可用于控制某些数据结构(例如 SortedSet 或 SortedMap)的顺序,或者为没有 Comparable 的对象集合提供排序。 当且仅当 c.compare(e1, e2)==0 对于每个 e1 具有与 e1.equals(e2) 相同的布尔值时,比较器 c 对一组元素 S 施加的排序被称为与 equals 一致和 S 中的 e2。 当使用能够施加与等于不一致的排序的比较器来对排序集(或排序映射)进行排序时,应谨慎行事。假设带有显式比较器 c 的有序集合(或有序映射)与从集合 S 中提取的元素(或键)一起使用。如果 c 对 S 施加的排序与 equals 不一致,则有序集合(或有序映射)将表现得“奇怪”。特别是有序集合(或有序映射)将违反集合(或映射)的一般合同,它是根据等式定义的。 例如,假设将两个元素 a 和 b 相加,使得 (a.equals(b) && c.compare(a, b) != 0) 到具有比较器 c 的空 TreeSet。第二个 add 操作将返回 true(并且树集的大小将增加),因为从树集的角度来看 a 和 b 不等价,即使这与 Set#add 方法的规范相反。 注意:比较器通常也实现 java.io.Serializable 是一个好主意,因为它们可以用作可序列化数据结构(如 TreeSet、TreeMap)中的排序方法。为了使数据结构成功序列化,比较器(如果提供)必须实现 Serializable。 对于数学倾向,定义给定比较器 c 对给定对象集 S 施加的强制排序的关系是: {(x, y) such that c.compare(x, y) <= 0}. 这个总订单的商是: {(x, y) such that c.compare(x, y) == 0}. 立即从比较契约得出,商是 S 上的等价关系,并且强加的排序是 S 上的全排序。当我们说 c 对 S 强加的排序与 equals 一致时,我们的意思是 排序的商是对象的 Object#equals(Object) 方法定义的等价关系: {(x, y) such that x.equals(y)}. 与 Comparable 不同的是,比较器可以选择允许比较空参数,同时保持对等价关系的要求。 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型...

鸿蒙OS Collection

Collection public interface Collection<E> extends Iterable<E> 集合层次结构中的根接口。 集合表示一组对象,称为其元素。 一些集合允许重复元素,而另一些则不允许。 有些是有序的,有些是无序的。 JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)的实现。 此接口通常用于传递集合并在需要最大通用性的地方操作它们。 Bags 或 multisets(可能包含重复元素的无序集合)应该直接实现这个接口。 所有通用 Collection 实现类(通常通过其子接口之一间接实现 Collection)应提供两个“标准”构造函数:一个 void(无参数)构造函数,它创建一个空集合,以及一个具有单个参数类型的构造函数集合,它创建一个具有与其参数相同的元素的新集合。实际上,后一个构造函数允许用户复制任何集合,生成所需实现类型的等效集合。没有办法强制执行此约定(因为接口不能包含构造函数),但 Java 平台库中的所有通用 Collection 实现都遵守。 此接口中包含的“破坏性”方法,即修改其操作的集合的方法,指定在此集合不支持操作时抛出 UnsupportedOperationException。如果是这种情况,如果调用对集合没有影响,这些方法可能会(但不是必须)抛出 UnsupportedOperationException。例如,如果要添加的集合为空,则对不可修改的集合调用 addAll(java.util.Collection) 方法可能但不是必须抛出异常。 一些集合实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,而一些实现对其元素的类型有限制。 尝试添加不合格的元素会引发未经检查的异常,通常是 NullPointerException 或 ClassCastException。 尝试查询不合格元素的存在可能会引发异常,或者它可能只是返回 false; 一些实现会表现出前一种行为,而另一些会表现出后者。 更一般地,尝试对不合格元素执行操作,该不合格元素的完成不会导致将不合格元素插入集合中,这可能会引发异常,也可能会成功,这取决于实现的选择。 此类异常在此接口的规范中被标记为“可选”。 由每个集合决定自己的同步策略。在实现没有更强有力的保证的情况下,未定义的行为可能是由于对正在被另一个线程改变的集合上的任何方法的调用引起的;这包括直接调用,将集合传递给可能执行调用的方法,以及使用现有迭代器检查集合。 Collections Framework 接口中的许多方法都是根据 Object#equals(Object) 方法定义的。例如,contains(Object o) 方法的规范说:“当且仅当此集合包含至少一个元素 e 使得 (o==null ? e==null : o.equals(e)) 。”本规范不应被解释为暗示使用非空参数 o 调用 Collection.contains 将导致对任何元素 e 调用 o.equals(e)。实现可以自由地实现优化,从而避免调用 equals,例如,首先比较两个元素的哈希码。 (Object#hashCode() 规范保证具有不相等哈希码的两个对象不能相等。)更一般地说,各种集合框架接口的实现可以自由地利用底层 Object 方法的指定行为,只要实现者认为它合适. 一些执行集合递归遍历的集合操作可能会失败,但对于集合直接或间接包含自身的自引用实例的异常。 这包括 clone()、equals()、hashCode() 和 toString() 方法。 实现可以选择处理自引用场景,但是大多数当前的实现不这样做。 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型 方法 描述 boolean add(E e) 确保此集合包含指定的元素(可选操作)。 boolean addAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合(可选操作)。 void clear() 从此集合中移除所有元素(可选操作)。 boolean contains(Object o) 如果此集合包含指定元素,则返回 true。 boolean containsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,则返回 true。 boolean equals(Object o) 比较指定对象与此集合是否相等。 int hashCode() 返回此集合的哈希码值。 boolean isEmpty() 如果此集合不包含任何元素,则返回 true。 IteratorE iterator() 返回此集合中元素的迭代器。 default StreamE parallelStream() 返回以该集合为源的可能并行 Stream。 boolean remove(Object o) 从此集合中移除指定元素的单个实例(如果存在)(可选操作)。 boolean...

鸿蒙OS URLStreamHandler

URLStreamHandler java.lang.Object |—java.net.URLStreamHandler public abstract class URLStreamHandler extends Object 抽象类 URLStreamHandler 是所有流协议处理程序的公共超类。 流协议处理程序知道如何为特定协议类型(例如 http 或 https)建立连接。 在大多数情况下,URLStreamHandler 子类的实例不是由应用程序直接创建的。 相反,在构造 URL 时第一次遇到协议名称时,会自动加载适当的流协议处理程序。 构造函数摘要 构造函数 描述 URLStreamHandler() 方法总结 修饰符和类型 方法 描述 protected boolean equals(URL u1, URL u2) 提供默认的 equals 计算。 protected int getDefaultPort() 返回此处理程序解析的 URL 的默认端口。 protected InetAddress getHostAddress(URL u) 获取我们主机的 IP 地址。 protected int hashCode(URL u) 提供默认的哈希计算。 protected boolean hostsEqual(URL u1, URL u2) 比较两个 URL 的主机组件。 protected abstract URLConnection openConnection(URL u) 打开与 URL 参数引用的对象的连接。 protected URLConnection openConnection(URL u, Proxy p) 与 openConnection(URL) 相同,只是连接将通过指定的代理进行; 不支持代理的协议处理程序将忽略代理参数并建立正常连接。 protected void parseURL(URL u, String spec, int start, int limit) 将 URL 的字符串表示形式解析为 URL 对象。 protected boolean sameFile(URL u1, URL u2) 比较两个 url 以查看它们是否引用同一个文件,即具有相同的协议、主机、端口和路径。 protected void setURL(URL u, String protocol, String host, int port, String file, String ref) 已弃用。 使用 setURL(URL, String, String, int, String, String, String, String); protected void setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref) 将 URL 参数的字段设置为指示的值。 protected String toExternalForm(URL u) 将特定协议的 URL 转换为字符串。 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 构造函数详细信息 URLStreamHandler public URLStreamHandler() 方法详情 openConnection protected abstract URLConnection openConnection(URL u) throws IOException 打开与 URL 参数引用的对象的连接。 此方法应被子类覆盖。 如果对于处理程序的协议(例如 HTTP 或 JAR),存在属于以下包之一或其子包之一的公共专用 URLConnection 子类:java.lang、java.io、java.util、java.net、 返回的连接将属于该子类。 例如,对于 HTTP,将返回一个 HttpURLConnection,对于 JAR,将返回一个 JarURLConnection。 参数: 参数名称 参数描述 u 此连接到的 URL。 返回: URL 的 URLConnection 对象。 Throws: Throw名称 Throw描述 IOException 如果在打开连接时发生 I/O 错误。 openConnection protected URLConnection openConnection(URL u, Proxy p)...

鸿蒙OS URLEncoder

URLEncoder java.lang.Object |—java.net.URLEncoder public class URLEncoder extends Object HTML 表单编码的实用程序类。 此类包含用于将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。 有关 HTML 表单编码的更多信息,请参阅 HTML 规范。 对字符串进行编码时,适用以下规则: 字母数字字符“a”到“z”、“A”到“Z”和“0”到“9”保持不变。 特殊字符“.”、“-”、“*”和“_”保持不变。 空格字符“”转换为加号“+”。 所有其他字符都是不安全的,首先使用某种编码方案将其转换为一个或多个字节。 然后每个字节由 3 个字符的字符串“%xy”表示,其中 xy 是字节的两位十六进制表示。 推荐使用的编码方案是 UTF-8。 但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。 例如,使用 UTF-8 作为编码方案,字符串 “The string ü@foo-bar” 将被转换为 “The+string+%C3%BC%40foo-bar”,因为在 UTF-8 中,字符 ü 被编码为两个 字节 C3(十六进制)和 BC(十六进制),字符 @ 被编码为一个字节 40(十六进制)。 方法总结 修饰符和类型 方法 描述 static String encode(String s) 已弃用。 结果字符串可能因平台的默认编码而异。 相反,使用 encode(String,String) 方法来指定编码。 static String encode(String s, String enc) 使用特定的编码方案将字符串转换为 application/x-www-form-urlencoded 格式。 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 方法详情 encode @Deprecated public static String encode(String s) 已弃用。 结果字符串可能因平台的默认编码而异。 相反,使用 encode(String,String) 方法来指定编码。 将字符串转换为 x-www-form-urlencoded 格式。 此方法使用平台的默认编码作为编码方案来获取不安全字符的字节。 参数: 参数名称 参数描述 s 要翻译的字符串。 返回: 翻译后的字符串。 encode public static String encode(String s, String enc) throws UnsupportedEncodingException 使用特定的编码方案将字符串转换为 application/x-www-form-urlencoded 格式。 此方法使用提供的编码方案来获取不安全字符的字节。 注意:万维网联盟建议规定应使用 UTF-8。 不这样做可能会引入不兼容性。 参数: 参数名称 参数描述 s 要翻译的字符串。 enc 支持的字符编码的名称。 返回: 翻译后的字符串。 Throws: Throw名称 Throw描述 UnsupportedEncodingException...

鸿蒙OS URLDecoder

URLDecoder java.lang.Object |—java.net.URLDecoder public class URLDecoder extends Object HTML 表单解码的实用程序类。 此类包含用于从 application/x-www-form-urlencoded MIME 格式解码字符串的静态方法。 转换过程与 URLEncoder 类使用的过程相反。 假设编码字符串中的所有字符都是以下之一:“a”到“z”,“A”到“Z”,“0”到“9”,以及“-”、“_”、“ 。“, 和 ”*”。 允许使用字符“%”,但将其解释为特殊转义序列的开始。 以下规则适用于转换: 字母数字字符“a”到“z”、“A”到“Z”和“0”到“9”保持不变。 特殊字符“.”、“-”、“*”和“_”保持不变。 加号“+”转换为空格字符“”。 “%xy”形式的序列将被视为代表一个字节,其中 xy 是 8 位的两位十六进制表示。 然后,连续包含一个或多个这些字节序列的所有子字符串将被其编码将导致这些连续字节的字符替换。 可以指定用于解码这些字符的编码方案,或者如果未指定,将使用平台的默认编码。 该解码器有两种可能的方式来处理非法字符串。 它可以单独留下非法字符,也可以抛出 IllegalArgumentException。 解码器采用哪种方法留给实现。 构造函数摘要 构造函数 描述 URLDecoder() 方法总结 修饰符和类型 方法 描述 static String decode(String s) 已弃用。 结果字符串可能因平台的默认编码而异。 相反,使用 decode(String,String) 方法来指定编码。 static String decode(String s, String enc) 使用特定的编码方案解码 application/x-www-form-urlencoded 字符串。 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 构造函数详细信息 URLDecoder public URLDecoder() 方法详情 decode @Deprecated public static String decode(String s) 已弃用。 结果字符串可能因平台的默认编码而异。 相反,使用 decode(String,String) 方法来指定编码。 解码 x-www-form-urlencoded 字符串。 平台的默认编码用于确定由“%xy”形式的任何连续序列表示的字符。 参数: 参数名称 参数描述 s 要解码的字符串 返回: 新解码的字符串 decode public static String decode(String s, String enc) throws UnsupportedEncodingException 使用特定的编码方案解码 application/x-www-form-urlencoded 字符串。 提供的编码用于确定由“%xy”形式的任何连续序列表示的字符。 注意:万维网联盟建议规定应使用 UTF-8。 不这样做可能会引入不兼容性。 参数: 参数名称 参数描述 s 要解码的字符串 enc 支持的字符编码的名称。 返回: 新解码的字符串 Throws: Throw名称 Throw描述 UnsupportedEncodingException 如果需要查询字符编码,但不支持命名字符编码

鸿蒙OS URLConnection

URLConnection java.lang.Object |—java.net.URLConnection public abstract class URLConnection extends Object 抽象类 URLConnection 是表示应用程序和 URL 之间的通信链接的所有类的超类。 此类的实例可用于读取和写入 URL 引用的资源。 通常,创建到 URL 的连接是一个多步骤的过程:—————————-> 时间 连接对象是通过在 URL 上调用 openConnection 方法来创建的。 设置参数和一般请求属性被操纵。 与远程对象的实际连接是使用 connect 方法建立的。 远程对象变为可用。 可以访问远程对象的标头字段和内容。 使用以下方法修改设置参数: setAllowUserInteraction setDoInput setDoOutput setIfModifiedSince setUseCaches 并使用以下方法修改通用请求属性: setRequestProperty 可以使用 setDefaultAllowUserInteraction 和 setDefaultUseCaches 方法设置 AllowUserInteraction 和 UseCaches 参数的默认值。 上面的每个 set 方法都有一个对应的 get 方法来检索参数或通用请求属性的值。 适用的特定参数和一般请求属性是特定于协议的。 以下方法用于在与远程对象建立连接后访问标头字段和内容: getContent getHeaderField getInputStream getOutputStream 某些标题字段被频繁访问。 方法: getContentEncoding getContentLength getContentType getDate getExpiration getLastModifed 提供对这些字段的方便访问。 getContentType方法被getContent方法用来判断远程对象的类型; 子类可能会发现重写 getContentType 方法很方便。 在常见情况下,可以忽略所有预连接参数和一般请求属性:预连接参数和请求属性默认为合理值。 对于这个接口的大多数客户端来说,只有两个有趣的方法:getInputStream 和 getContent,它们通过便利方法镜像到 URL 类中。 有关 http 连接的请求属性和标头字段的更多信息,请参见: http://www.ietf.org/rfc/rfc2616.txt 在请求之后对 URLConnection 的 InputStream 或 OutputStream 调用 close() 方法可能会释放与此实例关联的网络资源,除非特定的协议规范为其指定了不同的行为。 字段摘要 修饰符和类型 字段 描述 protected boolean allowUserInteraction 如果为true,则在允许用户交互(例如弹出身份验证对话框)有意义的上下文中检查此 URL。 protected boolean connected 如果为 false,则此连接对象尚未创建到指定 URL 的通信链接。 protected boolean doInput 此变量由 setDoInput 方法设置。 protected boolean doOutput 此变量由 setDoOutput 方法设置。 protected long ifModifiedSince 一些协议支持跳过对象的获取,除非对象在某个时间之后被修改过。 protected URL url URL 代表万维网上打开此连接的远程对象。 protected boolean useCaches 如果为 true,则允许协议尽可能使用缓存。 构造函数摘要 修饰符 构造函数...

鸿蒙OS URLClassLoader

URLClassLoader java.lang.Object |—java.lang.ClassLoader |—|—java.security.SecureClassLoader |—|—|—java.net.URLClassLoader public class URLClassLoader extends SecureClassLoader implements Closeable 此类加载器用于从引用 JAR 文件和目录的 URL 的搜索路径加载类和资源。 假设任何以“/”结尾的 URL 都指向一个目录。 否则,假定 URL 引用将根据需要打开的 JAR 文件。 创建 URLClassLoader 实例的线程的 AccessControlContext 将在随后加载类和资源时使用。 默认情况下,加载的类仅被授予访问在创建 URLClassLoader 时指定的 URL 的权限。 构造函数摘要 构造函数 描述 URLClassLoader(URL[] urls) 使用默认委托父 ClassLoader 为指定的 URL 构造一个新的 URLClassLoader。 URLClassLoader(URL[] urls, ClassLoader parent) 为给定的 URL 构造一个新的 URLClassLoader。 URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的 URLClassLoader。 方法总结 修饰符和类型 方法 描述 protected void addURL(URL url) 将指定的 URL 附加到 URL 列表以搜索类和资源。 void close() 关闭此 URLClassLoader,使其不能再用于加载此加载器定义的新类或资源。 protected Package definePackage(String name, Manifest man, URL url) 在此 ClassLoader 中按名称定义新包。 protected Class<?> findClass(String name) 从 URL 搜索路径中查找并加载具有指定名称的类。 URL findResource(String name) 在 URL 搜索路径上查找具有指定名称的资源。 EnumerationURL findResources(String name) 返回一个 URL 枚举,表示 URL 搜索路径上具有指定名称的所有资源。 protected PermissionCollection getPermissions(CodeSource codesource) 返回给定代码源对象的权限。 InputStream getResourceAsStream(String name) 返回用于读取指定资源的输入流。 URL[] getURLs() 返回用于加载类和资源的 URL 的搜索路径。 static URLClassLoader newInstance(URL[] urls) 为指定的 URL 和默认父类加载器创建 URLClassLoader 的新实例。 static URLClassLoader newInstance(URL[] urls, ClassLoader parent) 为指定的 URL 和父类加载器创建 URLClassLoader 的新实例。 从类 java.lang.ClassLoader 继承的方法 clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 从类 java.security.SecureClassLoader 继承的方法 defineClass, defineClass 构造函数详细信息 URLClassLoader public URLClassLoader(URL[] urls, ClassLoader parent) 为给定的 URL 构造一个新的 URLClassLoader。 在第一次在指定的父类加载器中搜索之后,将按照为类和资源指定的顺序搜索 URL。 假设任何以“/”结尾的 URL 都指向一个目录。 否则,假定 URL 指向将根据需要下载和打开的 JAR 文件。 如果有安全管理器,此方法首先调用安全管理器的 checkCreateClassLoader 方法,以确保允许创建类加载器。 参数: 参数名称 参数描述...

鸿蒙OS URL

URL java.lang.Object |—java.net.URL public final class URL extends Object implements Serializable 类 URL 代表一个统一资源定位器,一个指向万维网上“资源”的指针。 资源可以是文件或目录等简单的东西,也可以是对更复杂对象的引用,例如对数据库或搜索引擎的查询。 通常,一个 URL 可以分为几个部分。 考虑以下示例: http://www.example.com/docs/resource1.html 上面的 URL 表明要使用的协议是 http(超文本传输协议),并且信息驻留在名为 www.example.com 的主机上。 该主机上的信息名为 /docs/resource1.html。 该名称在主机上的确切含义既依赖于协议,也依赖于主机。 信息通常驻留在文件中,但也可以即时生成。 URL 的这个组件称为路径组件。 URL 可以选择指定一个“端口”,它是在远程主机上建立 TCP 连接的端口号。 如果未指定端口,则使用协议的默认端口。 例如,http 的默认端口是 80。替代端口可以指定为: http://www.example.com:1080/docs/resource1.html URL 的语法由 RFC 2396 定义:统一资源标识符 (URI):通用语法,由 RFC 2732 修订:URL 中文字 IPv6 地址的格式。 Literal IPv6 地址格式也支持 scope_ids。 此处描述了 scope_ids 的语法和用法。 URL 可能附加了一个“片段”,也称为“参考”或“参考”。 片段由尖号字符“#”表示,后跟更多字符。 例如, http://java.sun.com/index.html#chapter1 此片段在技术上不是 URL 的一部分。 相反,它表示在检索到指定资源后,应用程序对文档中附加了标签 chapter1 的那部分特别感兴趣。 标签的含义是资源特定的。 应用程序还可以指定一个“相对 URL”,它只包含足够的信息来访问相对于另一个 URL 的资源。 相对 URL 经常在 HTML 页面中使用。 例如,如果 URL 的内容: http://java.sun.com/index.html 其中包含相对 URL: FAQ.html 这将是以下的简写: http://java.sun.com/FAQ.html 相对 URL 不需要指定 URL 的所有组成部分。 如果缺少协议、主机名或端口号,则从完全指定的 URL 继承该值。 必须指定文件组件。 可选片段不被继承。 URL 类本身并不根据 RFC2396 中定义的转义机制对任何 URL 组件进行编码或解码。 调用者有责任对在调用 URL 之前需要转义的任何字段进行编码,并对从 URL 返回的任何转义字段进行解码。 此外,由于 URL 不知道 URL 转义,因此它无法识别同一 URL 的编码或解码形式之间的等价性。 例如,两个 URL:...

鸿蒙OS URI

URI java.lang.Object |—java.net.URI public final class URI extends Object implements Comparable<URI>, Serializable 表示统一资源标识符 (URI) 引用。 除了下面提到的一些小偏差之外,此类的一个实例表示由 RFC 2396 定义的 URI 引用:统一资源标识符 (URI):通用语法,由 RFC 2732 修订:URL 中文字 IPv6 地址的格式。 Literal IPv6 地址格式也支持 scope_ids。 此处描述了 scope_ids 的语法和用法。 此类提供了用于从其组件或通过解析其字符串形式创建 URI 实例的构造函数、用于访问实例的各种组件的方法,以及用于规范化、解析和相对化 URI 实例的方法。 此类的实例是不可变的。 URI 语法和组件 在最高级别,字符串形式的 URI 引用(以下简称“URI”)具有以下语法 [scheme:]scheme-specific-part[#fragment] 其中方括号 […] 描述可选组件,字符 : 和 # 代表它们自己。 绝对 URI 指定方案; 一个非绝对的 URI 被称为是相对的。 URI 还根据它们是不透明的还是分层的进行分类。 不透明 URI 是绝对 URI,其特定于方案的部分不以斜杠字符 (‘/’) 开头。 不透明的 URI 不受进一步解析的影响。 不透明 URI 的一些示例是: 分层 URI 要么是绝对 URI,其特定于方案的部分以斜杠字符开头,要么是相对 URI,即不指定方案的 URI。 分层 URI 的一些示例是: http://java.sun.com/j2se/1.3/ docs/guide/collections/designfaq.html#28 ../../../demo/jfc/SwingSet2/src/SwingSet2.java file:///~/calendar 分层 URI 需要根据语法进行进一步解析 scheme:path[#fragment] 其中字符 :、/、? 和 # 代表它们自己。 分层 URI 的特定于方案的部分由方案和片段组件之间的字符组成。 如果指定,分层 URI 的权限组件是基于服务器的或基于注册表的。 基于服务器的权限根据熟悉的语法进行解析 [user-info@]host[:port] 其中字符 @ 和 : 代表它们自己。目前使用的几乎所有 URI 方案都是基于服务器的。不以这种方式解析的权限组件被认为是基于注册表的。 如果分层 URI 的路径组件以斜杠字符 (‘/’) 开头,则它本身就是绝对的;否则是相对的。分层 URI 的路径要么是绝对的,要么是指定权限的,它始终是绝对的。 总而言之,一个 URI...