我想通过构造函数注入我的通用接口的实现。
这是我的界面
public interface BaseValidator<T> {
boolean isValid(T t);
}
首次实施
public class FirstValidator implements BaseValidator<String> {
@Override
public boolean isValid(String string) {
// code here
}
第二次实施
public class SecondValidator implements BaseValidator<Int> {
@Override
public boolean isValid(Int int) {
// code here
}
我在验证模块中提供
@Provides
@Singleton
@Named("FirstValidator")
public BaseValidator<String> provideFirstValidator(){
return new FirstValidator();
}
@Provides
@Singleton
@Named("SecondValidator")
public BaseValidator<Int> provideSecondValidator(){
return new SecondValidator();
}
然后当我尝试像这样注入它时
private BaseValidator<String> mFirstValidator;
@Inject
public MainPresenter(@Named("FirstValidator") BaseValidator<String> firstValidator) {
this.mFirstValidator = firstValidator;
}
抛出错误
error: [dagger.android.AndroidInjector.inject(T)] BaseValidator<java.lang.String> cannot be provided without an @Provides-annotated method.
如何将我的通用接口实现注入任何类?
答案 0 :(得分:0)
您需要使用instance of
运算符来检查字符串类型或整数然后验证。