在Dagger/Hilt中,如果使用相同的返回值绑定提供者,则会导致覆盖并出现问题。
例如,我们有以下两个提供者方法:
@Provides
String provideString() {
return "Hello";
}
@Provides
String provideAnotherString() {
return "Hello";
}
在这种情况下,Dagger/Hilt无法确定哪个提供程序可用,因为它们都返回相同的值。 为了解决这个问题,我们可以添加一个限定符(Qualifier)注解来使两个提供者方法不同。
@Provides
@Named("hello")
String provideString() {
return "Hello";
}
@Provides
@Named("anotherHello")
String provideAnotherString() {
return "Hello";
}
在这里,我们添加了@Named注解,以便在注入时区分提供者。 @Named的作用就是限定符,它可以用于区分提供者。
我们现在可以使用@Named来注入它:
@Inject
@Named("hello")
String str;
这样就解决了同样的返回值绑定提供者的问题。