목록전체 글 (78)
몰?.루();
lateinit var a: String // 가능 lateinit var b: Int // 불가능 lateinit var c: Integer // 가능 왜냐하면 코틀린 코드를 자바로 변환했을 때 lateinit을 구현하는 방법 자체가 변수를 일단 null로 해놓고, getter를 호출하는 시점에 변수가 아직 null이면 Exception을 throw하는 방식이기 때문입니다. 그렇기 때문에 String 같은 non-primitive type들은 처음에 null을 일단 선언해놓을 수 있는데 int 같은 primitive type들은 처음에 null로 선언할 수가 없기 때문에 (자바에서 int형에 null을 넣을 수 없습니다. 멤버 변수 선언할 때 그냥 int a; 이렇게 선언만 해놓는 것도 결국엔 int ..
Android Jetpack에 포함되어있는 유명한 라이브러리 중 하나가 LiveData입니다. 값의 변화를 liveData.observe(this, Observer { // ... }) 이런 식으로 관찰해서 사용할 수 있기 때문에 많이 사용됩니다. 그리고 이 LivaData가 디자인 패턴 중에 옵저버 패턴을 사용하는 대표적인 예시 중 하나이기 때문에 옵저버 패턴을 공부할 겸 평소에 유용하게 쓰던 LiveData를 직접 구현해보겠습니다. class SimpleLiveData { private var data: T? = null private val observers = mutableListOf Unit>() fun observe(observer: (T?) -> Unit) { observers.add(obs..