2014-10-17 14 views
23

대거를 사용하여 클래스에 종속성을 주입하는 가장 좋은 방법은 무엇입니까? 특히 대거와 함께 활동과 같은 0 인수 생성자 클래스? Dagger 2가 상황을 개선 할 수 있습니까?대거와 Kotlin 사용

미리 감사드립니다.

답변

32

& 2) 및 기타 프레임 워크.

lateinit 속성입니다. 문서에서 발췌 : 간단히 말해서

class Example { 
      @Inject 
      lateinit var bar: Bar 
} 

, 에는 초기화가 없습니다 만, null 이외의 형식으로 선언됩니다. 초기화 전에 읽으려고하면 예외가 발생합니다.
그렇지 않으면 Dagger를 사용하여 초기화되면 일반 속성으로 사용할 수 있습니다.

모든 내용은 language doc에서 잘 설명되어 있으며 여기에서 M13 버전의 blog post relative을 확인할 수도 있습니다.

+0

kotlin에서 Int, Long과 같은 기본 유형을 lateinit하는 방법 –

1

대거는 내가 알고있는 한 Kotlin에서 아직 지원되지 않는 주석 처리를 필요로합니다. 그러나 그들은 말한다, 그것은 계획되어있다. 그리고 Dagger 종속성을 사용하여 Java 클래스를 확장하거나 반성 기반 주입 프레임 워크를 사용할 수도 있습니다. - Guice, Roboguice

+1

주석 처리가 지원됩니다. 문제는 생성 된 코드의 '$'기호입니다. –

+0

@EugenMartynov 당신은 그것을 관리 할 수 ​​있었습니까? Dagger 1 및 기타 라이브러리, 주석 처리에 의존합니다. – naixx

13

잠시 동안 내 대답을 업데이트하지 않고 구식이되었습니다. 또한 M13/M14에서 작동하는 @Ben의 새로운 대답을 발견했습니다.

내가 관심있는 모든 사람을 내 템플릿 프로젝트에 리디렉션하면 최신 Kotlin 및 Dagger 2 버전으로 최신 상태를 유지하려고하는 것이 가장 좋습니다. Kotlin + Dagger 2 sample

I 등 다수의 주석을 포함한 객체를 삽입하는 방법이 설명하고

코 틀린 M13 방출하기 때문에, 새로운 속성 특히 단검과 같은 지지 의존성 주입 (하기 위해 추가 된
+0

내가 볼 수있는 샘플 프로젝트가 있습니까? –

+1

@cypressious 템플릿 프로젝트를 만들었습니다. https://github.com/damianpetla/kotlin-dagger-example –