19

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

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

现在我想创建一个之前的 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") 不起作用?

4

1 回答 1

25

如果当前 ClassLoader 已经知道包,则 Package.getPackage 只会返回非空值。尝试这个:

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 然后从其中加载了一个类。

于 2012-06-12T09:13:35.470 回答