想象一下匕首module
,它有以下两种方法来提供一个物体。
@Provides @Singleton Cache<Settings> providesSettingsCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
@Provides @Singleton Cache<User> providesUserCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
在我的示例中,StateCache
实现了Cache<User>
和Cache<Settings>
接口。现在,不是两个方法都返回StateCache
的实例,我希望两种方法都明显指向同一个实例。
怎么能在Dagger得到这个? module
是否拥有StateCache
的一个实例的引用,并且两种方法都返回该实例?
答案 0 :(得分:6)
让Dagger管理StateCache
实例。
@Provides @Singleton StateCache provideStateCache(Database db) {
return new StateCache(db, BuildConfig.VERSION_CODE);
}
@Provides @Singleton Cache<Settings> provideSettingsCache(StateCache cache) {
return cache;
}
@Provides @Singleton Cache<User> provideSettingsCache(StateCache cache) {
return cache;
}