Java Dagger2注入通用接口实现
我想通过构造函数注入我的通用接口的实现 这是我的界面Java Dagger2注入通用接口实现,java,android,generics,dagger-2,Java,Android,Generics,Dagger 2,我想通过构造函数注入我的通用接口的实现 这是我的界面 public interface BaseValidator<T> { boolean isValid(T t); } 公共接口BaseValidator{ 布尔值有效(T); } 首次实施 public class FirstValidator implements BaseValidator<String> { @Override public boolean isValid(String strin
public interface BaseValidator<T> {
boolean isValid(T t);
}
公共接口BaseValidator{
布尔值有效(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
}
公共类FirstValidator实现BaseValidator{
@凌驾
公共布尔值isValid(字符串){
//代码在这里
}
第二次实施
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
}
公共类SecondValidator实现BaseValidator{
@凌驾
公共布尔值有效(Int){
//代码在这里
}
我在验证模块中提供
@Provides
@Singleton
@Named("FirstValidator")
public BaseValidator<String> provideFirstValidator(){
return new FirstValidator();
}
@Provides
@Singleton
@Named("SecondValidator")
public BaseValidator<Int> provideSecondValidator(){
return new SecondValidator();
}
@提供
@独生子女
@命名(“第一验证器”)
public BaseValidator provideFirstValidator(){
返回新的FirstValidator();
}
@提供
@独生子女
@命名(“第二验证器”)
public BaseValidator providedSecondValidator(){
返回新的SecondValidator();
}
然后当我试着像这样注射的时候
private BaseValidator<String> mFirstValidator;
@Inject
public MainPresenter(@Named("FirstValidator") BaseValidator<String> firstValidator) {
this.mFirstValidator = firstValidator;
}
私有BaseValidator mFirstValidator;
@注入
公共MainPresenter(@Named(“FirstValidator”)BaseValidator FirstValidator){
this.mFirstValidator=firstValidator;
}
它抛出错误
error: [dagger.android.AndroidInjector.inject(T)] BaseValidator<java.lang.String> cannot be provided without an @Provides-annotated method.
错误:[dagger.android.androidjector.inject(T)]如果没有@Provides注释方法,则无法提供BaseValidator。
我如何将我的泛型接口实现注入任何类?@Boken您是如何解决这个问题的。我面临着一个类似的问题您解决了这个问题吗?