包版本标识

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Java2的一个新特性是可以在运行时给出包的版本信息。换言之,你可能有一个应用程序加载一个类而且你想知道那个类包实现的是哪个java规范的版本(例如1.1或者1.2)

要看看如何工作,看看下面的在命令行加载指定类的范例:

public class loadclass { public static void main(String args[]) { // check argument if (args.length != 1) { System.err.println("missing classname"); System.exit(1); } // load class Class c = null; try { c = Class.forName(args[0]); } catch (ClassNotFoundException e) { System.err.println(e); System.exit(1); } // retrieve and check package information Package pkg = c.getPackage(); if (pkg == null) { System.out.println("No version information"); } else { System.out.println(pkg); if (pkg.isCompatibleWith("1.2")) System.out.println("Compatible with 1.2"); } } }

假如你输入如下的内容运行这个程序:

$ java loadclass java.util.Vector

输出是:

package java.util, Java Platform API Specification,

version 1.2.0

Compatible with 1.2

(译者注:根据你的运行环境结果有所不同)

在这个例子中,包java.util的规范版本是1.2.0(也就是Java 2)并且和1.2兼容。"兼容"意味着包的版本至少要和isCompatibleWith方法调用中指定的版本相同。假如你想加载特定版本的类,你可以在你的应用程序中使用这样的检查。注重在同一个包中的所有类具有同一个Package对象因此有相同的版本信息。

版本信息是类加载器获得的,通常是从jar文件的manifest文件中得到。那个信息也可能不存在,在那种情况下getPackage返回null。

你可以使用方法Package.getPackages()得到类加载器中的所有包。

你也看看Tech Tips No. 17 (December 15, 1998),它描述了javac的-target选项,你可以使用这个选项产生针对特定版本的JVM的.class文件。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航