Java コードベースに「com.example」というパッケージがあるとします。
実行時に、呼び出してこのパッケージを取得できます。
Package p = Package.getPackage( "com.example" ); //(returns null)
または、呼び出してすべてのパッケージのリストを取得することもできます
Packages[] ps = Package.getPackages();
問題は、ClassLoader がパッケージからクラスをまだロードしていない場合、これらの関数呼び出しで使用できないことです。次のように、最初にパッケージ内のクラスの 1 つを強制的にロードすることで、パッケージを強制的にロードすることができます。
this.getClass().getClassLoader().loadClass( "com.example.SomeClass" );
Package p = Package.getPackage( "com.example" ); //(returns non-null)
ただし、これはハックであり、パッケージに属するクラスの名前を事前に知っておく必要があります。
そこで問題は、ClassLoader が何かを実行したかどうかに関係なく、Package のインスタンスを名前で取得する方法はあるのかということです。この状況でクラスローディング/パッケージがどのように機能するかについての私の仮定は正確ですか?