19

パッケージcom.abcにいくつかのクラスA、B、Cがあります

パッケージcom.pqrにクラスメインがあります

ここで、前のパッケージ(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

Package.getPackageは、現在のClassLoaderがすでにパッケージを認識している場合にのみ、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'を出力し、2番目はClassLoaderがパッケージをロードしたときにパッケージ名を出力します。

于 2012-06-12T09:13:35.470 に答える