Я пытаюсь внедрить объект в конструктор класса, который создается на основе сохраненных аннотаций для внедренного класса.Я могу создать сам объект достаточно просто с помощью Provider
, но мне нужно получить класс, который в настоящее время внедряется.
Аннотация MyClass
и базовая реализация MyClassImpl
:
public abstract class MyClass {} //ignoring constructor
@Annotation("value")
public class MyClassImpl extends MyClass {
@Inject
private MyClass(MyService service, MyObject object) {
super(service, object);
}
}
Служба, предоставляющая экземпляры и содержащая Injector
:
public class MyService {
private final Injector injector;
public <T extends MyClass> T getInstance(Class<T> clazz) {
return injector.getInstance(clazz);
}
}
Моя цель - настроить модуль таким образом, чтобы я мог внедрить экземпляр MyObject
, созданный с использованием информации изаннотация, например, с идентификатором * value
в приведенном выше примере.
Схематичное решение - сохранить класс, который в настоящее время вводится, как переменную в MyService
.Модуль создан в конструкторе, поэтому я могу получить его, и это должно достаточно хорошо соответствовать моим потребностям.Тем не менее, я думаю, что есть какой-то способ получить вводимый класс.
Спасибо!