Android 如何在具有2种不同实现的dagger模块中提供单例

Android 如何在具有2种不同实现的dagger模块中提供单例,android,dependency-injection,dagger,dagger-2,Android,Dependency Injection,Dagger,Dagger 2,想象一个dagger模块,它有以下两种方法来提供一个对象 @Provides @Singleton Cache<Settings> providesSettingsCache( Database db ) { return new StateCache( db, BuildConfig.VERSION_CODE ); } @Provides @Singleton Cache<User> providesUserCache( Database db ) {

想象一个dagger
模块
,它有以下两种方法来提供一个对象

@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 );
}
@提供@Singleton Cache provideSettingsCache(数据库数据库数据库)
{
返回新的StateCache(db,BuildConfig.VERSION\u代码);
}
@提供@Singleton Cache providesUserCache(数据库数据库数据库)
{
返回新的StateCache(db,BuildConfig.VERSION\u代码);
}
在我的示例中,
StateCache
实现了
Cache
Cache
接口。现在,我希望两个方法都指向同一个实例,而不是返回
StateCache
的实例。
用匕首怎么能做到这一点?
模块
是否持有对
StateCache
的一个实例的引用,并且两种方法都返回该引用?

让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;
}
@提供@Singleton StateCache provideStateCache(数据库数据库数据库){
返回新的StateCache(db,BuildConfig.VERSION\u代码);
}
@提供@Singleton Cache ProvideSettings缓存(StateCache缓存){
返回缓存;
}
@提供@Singleton Cache ProvideSettings缓存(StateCache缓存){
返回缓存;
}

太棒了,感谢您的回复!一旦你读了上面的片段,显而易见的事情突然变得有意义了。
Singletony
(原文如此)是打字错误吗?