2

想象一个匕首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,并且两种方法都返回该引用?

4

1 回答 1

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;
}
于 2015-01-19T17:50:57.693 回答