Guice провайдера на основе введенного класса - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь внедрить объект в конструктор класса, который создается на основе сохраненных аннотаций для внедренного класса.Я могу создать сам объект достаточно просто с помощью 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.Модуль создан в конструкторе, поэтому я могу получить его, и это должно достаточно хорошо соответствовать моим потребностям.Тем не менее, я думаю, что есть какой-то способ получить вводимый класс.

Спасибо!

...