假设一把匕首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的实例,而是希望两个方法都指向同一个实例。
这怎么能用匕首来完成呢?module是否包含一个引用,即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;
}

07-28 13:18