티스토리 뷰

반응형

코틀린에서 변수앞에 :: (더블 콜론)을 명시하면 변수를 객체로 액세스 하여 객체에 대한 속성을 참조 할수 있습니다.

val x = 1

fun main(args: Array<String>) {
    println(::x.get())
    println(::x.name) 
}
// 실행 결과
// 1
// x

 

코틀린은 기본적으로 Non-null 타입을 가집니다.

그러므로 항상 값을 초기화를 시켜주거나 null 값을 가질 수 있게 따로 처리해야합니다. (이전 글 참고)

  • lateinit 키워드는 초기화를 나중에 할 수 있게 미루는 키워드입니다.
  • valfinal 특징을 가지기 때문에 값 수정을 할수 없으므로 lateinit 키워드랑 같이 사용할 수 없습니다. 
  • primitive type(원시 타입)에서는 사용이 불가능합니다. ex) Double, Float, ...
  • 변수에 선택사항인 getter, setter 정의 불가
  • 변수의 유형은 null 이 아니어야하기에 null로 초기화 불가 타입 뒤에 ? 사용해도 불가합니다.
lateinit var str: String
lateinit var exClass: ExClass

lateinit var d: Double // 에러
lateinit var f: Float  // 에러
lateinit var l: Long   // 에러
lateinit var i: Int    // 에러
lateinit var s: Short  // 에러
lateinit var b: Byte   // 에러
lateinit var B: Boolean// 에러

class ExClass() {

}

 

isInitialized 속성을 이용한 초기화 확인

lateinit var str: String

fun main(args: Array<String>) {
	if (::str.isInitialized) println("초기화 완료, $str")
	else println("초기화 안됨")

	str = "홍길동"
	if (::str.isInitialized) println("초기화 완료, $str")
	else println("초기화 안됨")
}
/*
실행 결과
초기화 안됨
초기화 완료, 홍길동
*/

 

위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다.

2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기

2019/05/19 - [Kotlin] - 코틀린 기초 문법) 2. 코틀린 함수 정의하기

2019/05/19 - [Kotlin] - 코틀린 기초 문법) 3. 코틀린 문자열 템플릿 String Template

2019/05/19 - [Kotlin] - 코틀린 기초 문법) 4. 코틀린에서 null 사용 및 null 값 처리

2019/05/22 - [Kotlin] - 코틀린 기초 문법) 10. 코틀린 클래스와 생성자, init 키워드 알아보기

반응형
댓글
최근에 올라온 글
최근에 달린 댓글