Скажем, что java-кодовая база имеет пакет под названием "com.example".
Во время выполнения мы можем получить этот пакет, вызвав
Package p = Package.getPackage( "com.example" ); //(returns null)
или даже получить список всех пакетов, вызвав
Packages[] ps = Package.getPackages();
Проблема заключается в том, что если ClassLoader еще не загрузил какой-либо класс из пакета, он не будет доступен для этих вызовов функций. Мы можем заставить его загрузить пакет путем принудительной загрузки одного из классов в пакете сначала, например:
this.getClass().getClassLoader().loadClass( "com.example.SomeClass" );
Package p = Package.getPackage( "com.example" ); //(returns non-null)
Однако это взломанно и требует знания заранее определенного класса, принадлежащего к пакету.
Итак, вопрос в том, есть ли способ получить экземпляр пакета по имени, независимо от того, сделал ли ClassLoader что-либо? Являются ли мои предположения о том, как классная загрузка/пакеты, похоже, работают в этой ситуации точно?