- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个通用的数据库访问类,我正在使用 TypeLiteral 结构对其进行绑定(bind)。现在在测试中我想模拟那个类,因此我创建了一个 Provider,它创建了一个模拟实例。在我的测试中,我想访问那个模拟来定义它的行为。现在的问题是,如何从注入(inject)器中检索对象?
这是我的绑定(bind)定义:
binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class);
通常我会得到这样的实例:
injector.getInstance(GenericDbClass.class);
但是由于我没有将 GenericDbClass 的实现绑定(bind)到接口(interface)本身,所以我不知道该怎么做。我觉得很复杂吗?
非常感谢任何想法/帮助!
最佳答案
使用 Guice 的 Key
工具,它就是为解决这类问题而设计的。在你的情况下
injector.getInstance(Key.get(new TypeLiteral<GenericDbClass<Integer>>(){});
会成功的。
关于java - Guice:如何获得 TypeLiteral 包装的泛型的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6438803/
我已经开始学习 guice 并偶然发现使用 guice 来注入(inject)泛型类型。网络中的所有解决方案似乎都使用类似 new TypeLiteral>(){} 的内容。 。但是,当我尝试执行
给定这个方法签名,是否可以实现它?如果是,怎么办? TypeLiteral> combineTypes(Class typeOne, Class typeTwo) { // Awesome imp
这是我遇到的问题。我有一个界面: public interface MyInterface { public ConnectableObservable getTokenConnectableObse
上下文:java 使用 guice(最新版本) 大家好,是否可以通过这种方式向 Guice 注入(inject)一些 TypeLiteral: public MyClass getMyClass(In
我有一个通用的数据库访问类,我正在使用 TypeLiteral 结构对其进行绑定(bind)。现在在测试中我想模拟那个类,因此我创建了一个 Provider,它创建了一个模拟实例。在我的测试中,我想访
Guice 的 TypeLiteral 如何克服 Java 泛型类型删除过程? 效果很好,但这是如何实现的呢? 最佳答案 这里使用的技巧是泛型父类(super class)型的签名存储在子类中,因此幸
我正在开始学习Guice,但是我已经遇到了一个问题。当我尝试绑定(bind) TypeLiteral 时,我收到 Cannot resolve method 'to(anonymous com.goo
我有以下模块,带有 requireBinding: public class BillingModule extends AbstractModule { @Override prot
我有一些像这样的类型 // a value that is aware of its key type (K) Bar // something that deals with such values
以下通用 Guice 绑定(bind)方法行为正确: Key bindMultibinder( ArrayList> contents, Class superClass) { Nam
Google guice 使用 new TypeLiteral>() {}克服我们不能使用 C.class 的事实. 现在常见的有: bind(new TypeLiteral>() {}).to(My
我能够让下面的通用方法工作的唯一方法是传递看似多余的 TypeLiteral>范围。我相信应该可以在给定其他参数的情况下以编程方式构造此参数,但无法弄清楚如何。 protected Key> bin
这个问题已经有答案了: Why does Guava's TypeToken.getRawType() return Class instead of Class (2 个回答) 已关闭 5 年前。
我是一名优秀的程序员,十分优秀!