我的问题很简单,我可以在不扩展AbstractModule的类中创建@Provides方法吗?
@Provides
public int someMethod() {
return someValue;
}
在不扩展AbstractModule的类中是否可以有这样的东西,还是应该始终在guicemodule类中?
答案 0 :(得分:1)
Module
。从技术上讲,一切都是Module
,因此Guice必须如此识别。 Guice希望在其上运行configure(Binder)
。
这是您的操作方式:
public class MyModule implements Module { // See? No AbstractModule
@Provides
public int someMethod() {
return someValue;
}
@Override public void configure(Binder binder) {}
}
如果您只是想要一个没有任何实现要求的伪类来存储您的所有模块,那么您目前很不走运,因为这是不可能的。
但是,从Guice 4.1开始,您可以编写以下代码而无需实现configure(Binder)
,这还不错:
public class MyModule extends AbstractModule {
@Provides
public int someMethod() {
return someValue;
}
}