我在com.abc包中有一些A,B,C类

我在com.pqr包中有一个Main类

现在,我想创建上一个pacakge(abc)的包对象。

为此,我尝试了

Package pkg = Package.getPackage("com.abc");   // This gives me null object in pkg

但是当我这样做时
Package pkg = A.class.getPackage();    // It works fine

任何人都可以通知为什么Package.getPackage(“package-name”)不起作用?

最佳答案

如果当前的ClassLoader已经知道包,Package.getPackage将仅返回非null值。尝试这个:

Package pkg = Package.getPackage("com.abc");
System.out.println(pkg);
Class<A> a = A.class;
pkg = Package.getPackage("com.abc");
System.out.println(pkg);

第一个System.out将输出'null',第二个将打印软件包名称,因为ClassLoader然后从中加载了一个类。

08-16 19:06