通常应该尽可能使用构造函数注入。对的调用
component.inject(myObject)主要用于无法实例化自己的对象(如活动或片段)。
构造函数注入基本上就是您已经做过的:
private class MyManager { private SharedPreferencesManager manager; @Inject MyManager(SharedPreferencesManager manager){ this.manager = manager; } }Dagger将为您创建对象并传递给您
SharedPreferencesManager。不需要调用init或类似的东西。
真正的问题是如何 获得 的对象
MyManager。为此,匕首将再次为您处理。
通过注释构造函数,
@Inject您可以告诉dagger如何创建该类型的对象。要使用它,只需注入它或将其声明为依赖项。
private class MyActivity extends Activity { @Inject MyManager manager; public void onCreate(Bundle savedState){ component.inject(this); } }或仅向组件添加吸气剂(只要
SharedPreferenceManager可以提供,
MyManager也可以实例化):
@Component(dependencies = SharedPreferenceManagerProvidingComponent.class)public interface MyComponent { MyManager getMyManager();}


