假设我有:
public interface Shape {}
public class Rectangle implements Shape {
}
public class Circle implements Shape {
}
我有一个ApplicationModule,需要提供Rec和Circle的实例:
@Module
public class ApplicationModule {
private Shape rec;
private Shape circle;
public ApplicationModule() {
rec = new Rectangle();
circle= new Circle ();
}
@Provides
public Shape provideRectangle() {
return rec ;
}
@Provides
public Shape provideCircle() {
return circle;
}
}
和ApplicationComponent:
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
Shape provideRectangle();
}
以目前的代码状态,它无法编译。报错信息如下:
Error:(33, 20) error: Shape is bound multiple times.
我认为这是有道理的,因为组件正在尝试查找一个Shape
实例,但它找到了两个,所以不知道该返回哪一个。
我的问题是:我应该如何处理这个问题?
@Qualifier
来区分不同的类型。这里是一个简短的例子,展示如何使用这个注解。此外,这个SO问题可能会有所帮助。 - QBrute