Development/Android

[Hilt] @Provides methods may not have type parameters public final <T extends java.lang.Object>T provideApiService(@org.jetbrains.annotations.NotNull

SeungYong.Lee 2025. 4. 8. 16:07
반응형

- Hilt 기반으로 Network Module을 구성했는데, 갑자기 제목과 같은 오류가 발생했다.

 

- 다음 함수가 문제였다.

@Provides
@Singleton
fun <T> provideApiService(retrofit: Retrofit, service: Class<T>): T =
    retrofit.create(service)

- Hilt DI 그래프를 컴파일 타임에 생성하기 때문에, 어떤 타입을 주입할지 명확히알아야 한다.그런데 위처럼 <T> 제네릭을 쓰면 어떤 타입인지 컴파일 시점에 없기 때문에 에러가 발생한 것.

 

- 아래처럼 Api 호출 관련 함수가 하나로 정리된 Interface를 지정해 주면 된다.

@Provides
@Singleton
fun provideApiService(retrofit: Retrofit): ApiService = retrofit.create(ApiService::class.java)
반응형