是的,你可以,但你的类必须实现
>我的问题很简单 我可以在不扩展 AbstractModule 的类中创建一个@Provides方法吗?
@Provides
public int someMethod() {
return someValue;
}
我可以在不扩展 AbstractModule 的类中拥有这样的东西吗,或者它应该总是在 guicemodule 类中?
是的,你可以,但你的类必须实现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;
}
}