Guice:如何获取TypeLiteral包装的泛型的实例?

2022-09-02 19:45:14

我有一个泛型数据库访问类,我使用TypeLiteral构造进行绑定。现在在测试中,我想模拟该类,因此我创建了一个提供程序,该提供程序创建了一个模拟实例。在我的测试中,我想访问该模拟以定义其行为。现在的问题是,如何从注入器中检索对象?

这是我的绑定定义:

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

通常我会得到一个这样的实例:

injector.getInstance(GenericDbClass.class);

但是由于我没有将GenericDbClass的实现绑定到接口本身,我不知道该怎么做。我想复杂吗?

任何想法/帮助都非常感谢!


答案 1

使用Guice的设施,正是为这种问题而生的。在您的情况下Key

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

将做这个把戏。


答案 2

推荐