IT/Kotlin

[Kotlin] 코틀린 데이터 타입 Any, Nothing, 물음표(?) Nullable, Not NUll

바다, 2023. 7. 8. 10:00
반응형

[Kotlin 코틀린 데이터 타입]

 

[코틀린 Any 란]

모든 객체의 상위 객체 (모든 코틀린의 클래스는 Any의 하위 클래스)

Java의 Object 타입

-> Any 타입은 컴파일 시 Object로 변환

 

 

[코틀린 Nothing 이란]

null이나 예외를 반환하는 함수로

특수한 상황에서 사용한다.

Nothing으로 선언한 변수에는 null만 대입할 수 있다.

즉, 데이터로서는 의미가 없다.

 

주로 함수의 반환 타입에 사용한다.

어떤 함수의 반환타입이 Nothing 이면 반환은 하지만

의미 있는 값은 아니라는 의미이다.

항상 null만 반환하는 함수라든가,

예외를 던지는 함수의 반환 타입을 Nothing으로 선언한다.

 

var data1: Nothing? = null

// null 반환 함수

fun some1(): Nothing? {

   return null

}

// 예외를 던지는 함수

fun some2(): Nothing {

   throw Exception()

}

 

 

[코틀린 물음표(?)] - null 허용 (nullable), null 불허용 (not null) 

코틀린의 모든 타입은 객체이므로

변수에 null을 대입할 수 있다.

(null은 값이 할당되지 않은 상황을 의미)

코틀린에서는 변수를 선언할 때,

- null을 대입할 수 있는 변수인지 (널 허용, nullable)

- null을 대입할 수 없는 변수인지 (널 불허용, not null)

명확하게 구분해서 선언해야한다.

 

이러한 구분은 변수 선언 시,

타입 뒤에 물음표 (?)로 표시한다.

타입 뒤 물음표를 추가하면 널 허용으로 선언하지만 (nullable)

반대로 추가하지 않으면 널 불허용으로 선언 (not null)

 

var data1: Int = 10

data1 = null // 에러

 

var data2: Int? = 10

data2 = null // 정상

반응형