Допустим, у базы 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)
Однако, это хакерство и требует заранее знать имя некоторого класса, который принадлежит пакету.
Итак, вопрос в том, есть ли способ получить экземпляр Package по имени, независимо от того, что ClassLoader что-то сделал? Насколько точны мои предположения о том, как классная загрузка / пакеты работают в этой ситуации?