[Android] Hilt 생성자 default value

panax·2023년 12월 17일
0

Android

목록 보기
14/16
post-thumbnail

🍕Default value

Kotlin에서는 생성자에 기본 값을 설정할 수 있다.

class Person(
    val name: String = "test"
) { ... }

🍕Hilt inject

Hilt를 사용해서 의존성 주입을 하면 보통 다음 코드처럼 한다.

class AnalyticsAdapter @Inject constructor(
  private val service: AnalyticsService
) { ... }

그런데 생성자에 다음과 같이 default value를 설정하려고 하면 오류가 발생한다.

class AnalyticsAdapter @Inject constructor(
  private val name: String = "test",
  private val service: AnalyticsService
) { ... }

Hilt에서 String 타입으로 주입할 객체를 찾지 못해서 그런 거 같다.

🍦해결

내 경우 테스트 코드 때문에 저렇게 처리를 해야 했는데, 아래 방법으로 해결이 가능하다.

class MyNetwork(
    url: String,
    networkJson: Json,
    okHttpClientFactory: Call.Factory
) : MyNetworkDataSource {

    @Inject
    constructor(
        networkJson: Json,
        okHttpClientFactory: Call.Factory
    ) : this(
        url = BASE_URL,
        networkJson = networkJson,
        okHttpClientFactory = okHttpClientFactory
    )
}

주 생성자에는 필요한 변수를 전부 선언하고 @Inject 생성자에서는 주입받을 객체만 선언하면 된다.

profile
안드로이드 개발자

0개의 댓글