지연 초기화

클래스 설계할 때 초기의 값을 정의하기 난처하거나 저사양으로 제한되어있는 환경에서 메모리를 효율적으로 사용하려고 할 때 주로 사용된다.

 

lateinit var 변수명 : 타입

 .isInitialized를 통해 값이 초기화되었는지 boolean형태인 true/false로 초기화 여부를알 수 있다.

사용할 때는 값이 아니라 참조형태로 사용해야하기 때문에 this::을 붙인다

if(this::변수명.isInitialized) {
	
}

val 상수명 by lazy {}

lateinit var 변수명 : 변수타입

val 상수명 by lazy {초기화}

 

 


Null Safety

Null Exception 

 

var 변수명:String? = null   // ? 변수가 null일 수 있을 때 null을 갖을 수 있게끔 해준다.

${변수명?.length}       // ?. 변수가 null이 아니라면 length를 반환하고 null일 경우 null을 반환한다.

${변수명?.length ?: "초기화하세요"}    // ?: 앨비스 연산자 null 일 경우 뒤에 문장 실행

 

+ Recent posts