В OSGi вы захотите держаться подальше от рефлексии по причинам, изложенным во многих других местах.
Итак, ваша ситуация такова, что пакет A
нуждается в некотором экземпляре класса, который находится в комплектеB
.Чтобы A
понял смысл этого экземпляра, я предполагаю, что у него есть некоторый интерфейс, который он будет использовать для общения с экземпляром.Давайте сделаем это немного более конкретным.
/Bundle A
/ThingyInterface.class
/Bundle B
/ThingyImplementation.class (implements ThingyInterface.class)
Это обычный шаблон: один пакет предоставляет интерфейс, а другой - реализацию.Сейчас возможны две ситуации:
A
требуется ровно одна копия реализации.В этом случае зарегистрируйте Thingy
в качестве службы. A
требуется несколько экземпляров реализации.В этом случае введите ThingyFactory
в A
и создайте реализацию этой фабрики в B
, которую вы затем зарегистрируете как службу.
В любом случае вы разрешаете B
выполняйте фактическую реализацию, у вас нет зависимости от A
до B
, и B
не требует отражения для создания экземпляров объектов.
Короче говоря, службы - ваш друг.