2017-11-15 2 views
2

생성자를 통해 제네릭 인터페이스의 구현을 삽입하고 싶습니다. 단검 2 일반 인터페이스 구현을 삽입하십시오.

내 인터페이스

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

instance of 연산자를 사용하여 문자열 유형 또는 정수를 확인한 다음 유효성을 검사해야합니다.

+0

내 코드에서 어떻게 달성 할 수 있는지 설명해 주시겠습니까? – DigitalGrape

관련 문제