프로그래밍/Kotlin

[Kotlin] lateinit vs lazy

DwEnn 2018. 8. 23. 15:08
728x90
반응형

lateinit vs lazy




Kotlin 에서 초기화 지연 방식 두 가지를 지원한다



lateinit



public class Test { lateinit var mock: Mock @SetUp fun setup() { mock = Mock() } @Test fun test() { mock.do() } }




 lazy



public class Example{ val name: String by lazy { “Amit Shekhar” } }





언제, 어느것을 사용할지 선택하는 방법



 - lazy 는 val 속성에만 사용할 수 있지만, lateinit 은 최종 필드로 컴파일 할 수 없기 때문에 vars 에만 적용 할 수 있으므로 불변성을 보장 할 수 없다.

 - lateinit var 는 객체가 보이는 곳이라면 어디서든 초기화 될 수 있다. 외부에서 미리 알려지지 않은 방식으로 속성을 초기화 하려면 lateinit 을 사용하는 것이 좋다.




+ References


https://blog.mindorks.com/learn-kotlin-lateinit-vs-lazy



반응형