Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dagger2注入通用接口实现_Java_Android_Generics_Dagger 2 - Fatal编程技术网

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您是如何解决这个问题的。我面临着一个类似的问题您解决了这个问题吗?