У меня есть несколько модулей с интерфейсами службы привязки к соответствующим типам, и я могу получить экземпляр с помощьюПолучение экземпляра с помощью строкового литерала с Google Guice
injector.getInstance(MyServiceInterface.class)
Я хотел бы получить экземпляр, используя
injector.getInstance("MyServiceInterface")
т.е. строкового литерала вместо типа класса
Как я могу добиться этого?
Чтобы уточнить мой вопрос: я могу получить объект Class из строкового литерала с помощью вызова Class.forName(literal)
, а затем использовать его для извлечения экземпляра с помощью injector.getInstance(clsInstance)
.
После получения экземпляра, который я получаю в интерфейсе базового сервиса, мне нужно использовать отражение для вызова метода объекта службы.
так Обслуживание серв = injector.getInstance (MyCustomService.class)
Теперь мне нужно вызвать myCustomMethod(), присутствующий в MyCustomService посредством отражения, так как это Вызывающий является универсальным и предназначен для работы с несколькими службами, не будучи в курсе их фактического типа.
Мне также понадобятся перехватчики методов, настроенные на интерфейсах служб, которые будут прозрачно вызываться при обратном вызове метода в этом экземпляре.
Да я знаю этот вариант, но хотел бы знать, если есть решение в Сам Guice – Gautam
В Guice нет решения. –
Проблема заключается в том, что invoker является общим и не получит экземпляр в производном интерфейсе, скорее получит экземпляр в качестве базового типа. На этом мне нужно вызвать операцию через отражение. Я хочу знать, если это нарушит семантику Guice и если она вызовет метод перехватчиков на интерфейсе службы соответственно – Gautam