Kotlin/늦은 초기화
-
[Kotlin] by lazyKotlin/늦은 초기화 2021. 12. 12. 15:37
by 키워드 용도 1. 클래스(인터페이스 메서드 구현) 위임 2. 프로퍼티(accesor) 위임 by lazy - 프로퍼티 위임의 한 종류 코틀린은 기본 라이브러리를 통해 프로퍼티를 위임하는 여러 방법들을 제공한다. 그 중 한 종류이다. val 프로퍼티에만 사용가능하다. lazy 코드를 이해하기 위해 프로퍼티의 custom getter의 동작을 보자 person2의 custom getter = get(){ //코드 } //코드는 person2를 참조할 때(getter사용시) 호출된다. 인스턴스만 생성하고 getter를 호출하지 않아 getter의 println은 출력되지 않는다. 프로퍼티를 참조(getter 호출할떄) println코드가 실행된다는 것을 인지하고 lazy의 동작 과정을 살펴보자. 클래스 ..
-
[Kotlin] by 키워드Kotlin/늦은 초기화 2021. 9. 3. 16:23
1. by를 통한 클래스의 인터페이스 구현을 다른 객체에게 위임 interface A {...} class B : A {...} class C(b : B) : A by b {...} 클래스 C는 인터페이스 A를 구현한다. 클래스 C의 인터페이스 A 구현은 b객체(B클래스)가 A를 구현한 방식으로 구현된다. 클래스 C의 인터페이스 A 구현을 b객체에게 위임한다. 인터페이스의 메서드의 경우 interface Soundable { fun sound() } class Dog : Soundable { override fun sound() { println("멍멍") } } class MyDog(dog: Dog) : Soundable by dog { } fun main() { val dog = Dog() val m..