본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 37] 널이 될 수 있는 타입

결과가 없는 함수는 오류를 발생시키지 않으며, 아무 문제가 없다.
단지 값이 없을 뿐.

 

 

자바에서는 null이라는 값이 결과가 되도록 허용했으며,

이를 정상적인 값과 동일하게 다룰 경우 가끔 'NullPointException'이 발생하기도 했다.

이 때문에 많은 실패를 보았지만, null을 허용하지 않음으로서 이를 방지할 수 있다. 

오늘 학습할 아톰은 코틀린에서의 널이 될 수 있는 타입이다.

 


 

[ 코틀린에서 null이 될 수 있는 타입 ]

 

null이 될 수 있는 타입

: 코틀린에서의 모든 기본 타입은 null이 될 수 없음

: 타입 이름 뒤에 물음표(?)를 통해 null 가능 타입이 될 수 있음

: null 가능 타입은 기본 타입에 대입이 불가능

: null 가능 타입과 기본 타입은 서로 다른 타입

: 역참조(즉, 멤버 프로퍼니타 멤버 함수에 접근)가 불가능하며, if를 통해 null이 아님을 검사한 후에는 참조를 허용

* 역참조와 관련해서는 다음 아톰에서 설명 예정

 

import atomictest.eq

fun main() {
	// null 가능, 불가능 관련 예제
	val s1 ="abc" 
    // val s2: String = null 

	val s3: String? =null
    val s4: String? = s1
    
	// val s5: String = s4 // null이 될 가능성이 있기 때문에 기본 타입에 대입 불가
	val s6 = s4 // 타입 추론으로 null 가능 타입으로 추론됨
    
	s1 eq "abc"
    s3 eq null
    s4 eq "abc"
    s6 eq "abc"
}

 

 


 

[ 오늘의 학습 소감 ]

 

오늘 학습한 아톰은 크게는 하나의 내용을 이야기 하고 있다. 제목과 동일하게 '코틀린에서는 null을 허용할 수 있으며, 허용하지 않을수도 있다.' 였다. 코틀린에서는 타입에 물음표를 붙임으로서 null을 허용하고, 해당 타입의 경우 null이 아님을 보장받지 못하면 참조 또한 할 수 없다는 이야기였다. 물론 끝이 역참조에 대해서는 다음 아톰에서 설명하기 때문에 다음 아톰까지 계속 이어지는 이야기겠지만, 과연 이 역참조에 대해서는 코틀린이 어떻게 대처를 해놓았을지 궁금증이 커지는 아톰이었다.