【发布时间】:2018-08-18 18:42:24
【问题描述】:
所以我想做的是将MyGame 中创建的A 实例注入PlayScreen。到目前为止,这是我的代码:
class MyGame extends Game {
public A a;
public void create() {
a = new A();
Injector injector = Guice.createInjector(new GameModule(this));
setScreen(new PlayScreen());
}
}
public class GameModule extends AbstractModule {
MyGame game;
public GameModule(MyGame game){
this.game = game;
}
@Override protected void configure() {}
@Provides
@Singleton
A getA() {
return game.a;
}
}
public class PlayScreen extends Screen {
@Inject A a;
public void render() {
// Using a
}
}
但是在来自PlayScreen 的方法render() 中,批处理结果为空。
但是,如果在MyGame 我使用injector.getInstance(A.class) 一切正常,我不会得到null。
我做错了什么?
【问题讨论】:
-
和stackoverflow.com/questions/19896870/…本质上是一样的问题。最好的方法是使用构造函数注入而不是字段注入,这样可以立即识别出缺少依赖项的位置。
-
成功了,谢谢!我会发布答案。