Подтвердить что ты не робот

Guice: Как мне получить экземпляр типичного обернутого TypeLiteral?

У меня есть общий класс доступа к базе данных, который я привязываю, используя конструкцию TypeLiteral. Теперь в тесте я хочу издеваться над этим классом, и для этого я создал Провайдера, который создает экземпляр mock. В своем тесте я хочу получить доступ к этому макету, чтобы определить его поведение. Теперь вопрос в том, как я могу получить объект из инжектора?

Это мое определение привязки:

binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class);

Обычно я получаю такой экземпляр:

injector.getInstance(GenericDbClass.class);

Но так как я не привязываю реализацию GenericDbClass к самому интерфейсу, я не знаю, как это сделать. Сложно ли мне думать?

Любые идеи/помощь приветствуются!

4b9b3361

Ответ 1

Использовать средство Guice Key, созданное для такого рода проблем. В вашем случае

injector.getInstance(Key.get(new TypeLiteral<GenericDbClass<Integer>>(){});

сделает трюк.