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

📄 package.java

📁 This is a resource based on j2me embedded,if you dont understand,you can connection with me .
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)Package.java	1.38 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * */package java.lang;import java.io.InputStream;import java.util.Enumeration;import java.util.StringTokenizer;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URL;import java.net.MalformedURLException;import java.security.AccessController;import java.security.PrivilegedAction;import java.util.jar.JarInputStream;import java.util.jar.Manifest;import java.util.jar.Attributes;import java.util.jar.Attributes.Name;import java.util.jar.JarException;import java.util.Map;import java.util.HashMap;import java.util.Iterator;import sun.net.www.ParseUtil;/** * <code>Package</code> objects contain version information * about the implementation and specification of a Java package. * This versioning information is retrieved and made available * by the {@link ClassLoader <code>ClassLoader</code>} instance that * loaded the class(es).  Typically, it is stored in the manifest that is * distributed with the classes. * * <p>The set of classes that make up the package may implement a * particular specification and if so the specification title, version number, * and vendor strings identify that specification. * An application can ask if the package is * compatible with a particular version, see the {@link #isCompatibleWith * <code>isCompatibleWith</code>} method for details. * * <p>Specification version numbers use a syntax that consists of positive * decimal integers separated by periods ".", for example "2.0" or * "1.2.3.4.5.6.7".  This allows an extensible number to be used to represent * major, minor, micro, etc. versions.  The version specification is described * by the following formal grammar: * <blockquote> * <dl> * <dt><i>SpecificationVersion: * <dd>Digits RefinedVersion<sub>opt</sub></i> * <p><dt><i>RefinedVersion:</i> * <dd><code>.</code> <i>Digits</i> * <dd><code>.</code> <i>Digits RefinedVersion</i> * * <p><dt><i>Digits: * <dd>Digit * <dd>Digits</i> * * <p><dt><i>Digit:</i> * <dd>any character for which {@link Character#isDigit} returns <code>true</code>, * e.g. 0, 1, 2, ... * </dl> * </blockquote> * * <p>The implementation title, version, and vendor strings identify an * implementation and are made available conveniently to enable accurate * reporting of the packages involved when a problem occurs. The contents * all three implementation strings are vendor specific. The * implementation version strings have no specified syntax and should * only be compared for equality with desired version identifers. * * <p>Within each <code>ClassLoader</code> instance all classes from the same * java package have the same Package object.  The static methods allow a package * to be found by name or the set of all packages known to the current class * loader to be found. * * @see ClassLoader#definePackage */public class Package {    /**     * Return the name of this package.     *     * @return The name of this package using the Java language dot notation     * 		for the package. i.e  java.lang     */    public String getName() {	return pkgName;    }    /**     * Return the title of the specification that this package implements.     * @return the specification title, null is returned if it is not known.     */    public String getSpecificationTitle() {	return specTitle;    }    /**     * Returns the version number of the specification     * that this package implements.     * This version string must be a sequence of positive decimal     * integers separated by "."'s and may have leading zeros.     * When version strings are compared the most significant     * numbers are compared.     * @return the specification version, null is returned if it is not known.     */    public String getSpecificationVersion() {	return specVersion;    }    /**     * Return the name of the organization, vendor,     * or company that owns and maintains the specification     * of the classes that implement this package.     * @return the specification vendor, null is returned if it is not known.     */    public String getSpecificationVendor() {	return specVendor;    }    /**     * Return the title of this package.     * @return the title of the implementation, null is returned if it is not known.     */    public String getImplementationTitle() {	return implTitle;    }    /**     * Return the version of this implementation. It consists of any string     * assigned by the vendor of this implementation and does     * not have any particular syntax specified or expected by the Java     * runtime. It may be compared for equality with other     * package version strings used for this implementation     * by this vendor for this package.     * @return the version of the implementation, null is returned if it is not known.     */    public String getImplementationVersion() {    	return implVersion;    }    /**     * Returns the name of the organization,     * vendor or company that provided this implementation.     * @return the vendor that implemented this package..     */    public String getImplementationVendor() {    	return implVendor;    }    /**     * Returns true if this package is sealed.     *     * @return true if the package is sealed, false otherwise     */    public boolean isSealed() {	return sealBase != null;    }    /**     * Returns true if this package is sealed with respect to the specified     * code source url.     *     * @param url the code source url     * @return true if this package is sealed with respect to url     */    public boolean isSealed(URL url) {	return url.equals(sealBase);    }    /**     * Compare this package's specification version with a     * desired version. It returns true if     * this packages specification version number is greater than or equal     * to the desired version number. <p>     *     * Version numbers are compared by sequentially comparing corresponding     * components of the desired and specification strings.     * Each component is converted as a decimal integer and the values     * compared.     * If the specification value is greater than the desired     * value true is returned. If the value is less false is returned.     * If the values are equal the period is skipped and the next pair of     * components is compared.     *     * @param desired the version string of the desired version.     * @return true if this package's version number is greater     * 		than or equal to the desired version number     *     * @exception NumberFormatException if the desired or current version     *		is not of the correct dotted form.     */    public boolean isCompatibleWith(String desired)	throws NumberFormatException    {    	if (specVersion == null || specVersion.length() < 1) {	    throw new NumberFormatException("Empty version string");	}	//String [] sa = specVersion.split("\\.", -1);	String [] sa = new String[0];        	int [] si = new int[sa.length];	for (int i = 0; i < sa.length; i++) {	    si[i] = Integer.parseInt(sa[i]);	    if (si[i] < 0)  		throw NumberFormatException.forInputString("" + si[i]);	}	//String [] da = desired.split("\\.", -1);	String [] da = new String[0];	int [] di = new int[da.length];	for (int i = 0; i < da.length; i++) {	    di[i] = Integer.parseInt(da[i]);	    if (di[i] < 0)		throw NumberFormatException.forInputString("" + di[i]);	} 	int len = Math.max(di.length, si.length); 	for (int i = 0; i < len; i++) {	    int d = (i < di.length ? di[i] : 0); 	    int s = (i < si.length ? si[i] : 0);	    if (s < d)		return false;	    if (s > d)		return true;	}	return true;    }    /**     * Find a package by name in the callers <code>ClassLoader</code> instance.     * The callers <code>ClassLoader</code> instance is used to find the package     * instance corresponding to the named class. If the callers     * <code>ClassLoader</code> instance is null then the set of packages loaded     * by the system <code>ClassLoader</code> instance is searched to find the     * named package. <p>     *     * Packages have attributes for versions and specifications only if the class     * loader created the package instance with the appropriate attributes. Typically,     * those attributes are defined in the manifests that accompany the classes.     *     * @param name a package name, for example, java.lang.     * @return the package of the requested name. It may be null if no package     * 		information is available from the archive or codebase.     */    public static Package getPackage(String name) {	ClassLoader l = ClassLoader.getCallerClassLoader();

⌨️ 快捷键说明

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