gpt4 book ai didi

java - Dagger 2注入(inject)通用接口(interface)实现

转载 作者:行者123 更新时间:2023-11-29 02:35:38 26 4
gpt4 key购买 nike

我想通过构造函数注入通用接口的实现。

这是我的界面

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.


如何将通用接口的实现注入任何类?

最佳答案

您需要使用instance of运算符检查字符串类型或整数,然后进行验证。

关于java - Dagger 2注入(inject)通用接口(interface)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com