快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

极客娱乐网址:包版本标识



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

要看看若何事情,看看下面的在敕令行加载指定类的典型:

public class loadclass {public static void main(String args[]) {// check argumentif (args.length != 1) {System.err.println("missing classname");System.exit(1);}// load classClass c = null;try {c = Class.forName(args[0]);}catch (ClassNotFoundException e) {System.err.println(e);System.exit(1);}// retrieve and 极客娱乐网址check package informationPackage pkg = c.getPackage();if (pkg == null) {System.out.println("No version information");}else {System.out.println(pkg);if (pkg.isCo极客娱乐网址mpatibleWith("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

Compatib极客娱乐网址le with 1.2

(译者注:根据你的运行情况结果有所不合)

在这个例子中,包java.util的规范版本是1.2.0(也便是Java 2)并且和1.2兼容。"兼容"意味着包的版本至少要和isCom极客娱乐网址patibleWith措施调用中指定的版真相同。假如你想加载特定版本的类,你可以在你的利用法度榜样中应用这样的反省。留意在同一个包中的所有类具有同一个Package工具是以有相同的版本信息。

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

你可以应用措施Package.getPackages()获得类加载器中的所有包。

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

您可能还会对下面的文章感兴趣: