지연 초기화
lateinit
1. Nullable로 선언하는 일반적인 방법
2. lateinit을 사용하는 방법
3. lateinit의 특징
var로 선언된 클래스의 프로퍼티에만 사용할 수 있다.
null은 허용되지 않는다.
기본 자료형 Int, Long, Double, Float 등은 사용할 수 없다.
lazy
읽기 전용 변수인 val을 사용하는 지연 초기화
1. lazy의 특징
따로 초기화 할 필요가 없다.
lazy로 선언된 변수가 최초 호출되는 시점에 by lazy{} 안에 넣은 값으로 초기화된다. 위의 코드에서 Company 클래스가 초기화 되더라도 person에 바로 Person()으로 초기화되지 않고, process 메서드에서 person.name이 호출되는 순간 초 기화된다.
지연 초기화는 말 그대로 최초 호출되는 시점에 초기화 작업이 일어나기 때문에 초기화 하는 데 사용하는 리소스가 너 무 크면(메모리를 많이 쓰거나 코드가 복잡한 경우), 전체 처리 속도에 나쁜 영향을 미칠 수 있다. 따라서 복잡한 코드를 가지고 있는 클래스라면 미리 초기화 해놓고 사용하는 것이 효율적이다.