繁体   English   中英

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

[英]Guice: How do I get an instance of a TypeLiteral-wrapped generic?

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

这是我的约束定义:

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

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

injector.getInstance(GenericDbClass.class);

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

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

使用Guice的Key工具,这就是针对这类问题而设计的。 在你的情况下

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

会做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM