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

时间:2011-06-22 11:08:37

标签: java guice

我有一个通用数据库访问类,我使用TypeLiteral结构进行绑定。现在在测试中我想模拟该类,并且我已经创建了一个Provider,它创建了一个模拟实例。在我的测试中,我想访问该模拟来定义其行为。 现在问题是,如何从进样器中检索对象?

这是我的约束性定义:

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

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

injector.getInstance(GenericDbClass.class);

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

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

1 个答案:

答案 0 :(得分:42)

使用Guice的Key工具,这是为了解决这类问题。在你的情况下

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

会做到这一点。