根据您关于注入不同服务的评论。我会提出下一个解决方案。
服务提供者:
@Module(injects = {LoginHandler.class, LogoutHandler.class})
public class ServicesProvider {
@Provides @Singleton public LoginService getLoginService() {
return new LoginService();
}
}
登录处理程序.java:
public class LoginHandler extends Handler {
@Inject LoginService loginService;
}
HttpNetwork.java
public class HttpNetwork extends Network {
private ObjectGraph objectGraph = ObjectGraph.create(new ServicesProvider());
public registerHandler(String path, Handler handler, String methodType) {
getObjectGraph().inject(handler);
}
}
此解决方案有一周的时间点 - 您不能轻易更改ServiceProvider
以用于测试目的(或任何其他类型的目的)。但是,如果您也注入它(例如使用另一个对象图或仅通过构造函数),您可以解决这种情况。