Jave & Kotlin
Kotlin - 코틀린의 Unit 타입과 자바의 void 타입 차이 정리
devLog by Ronnie's
2022. 8. 24. 22:51
들어가며
자바에서 사용하였던 void와 코틀린에서의 Unit의 차이점을 알아보고 추가적으로 Nothing에 대해서도 정리한다.
void와 Void
자바의 void는 알다시피 반환 타입이 없을 때 사용한다. 우리가 잘 아는 main 함수의 반환 타입도 void로 되어 있다. 추가적으로 Void로 앞에 대문자로 되어 있는 것은 void와 다르다. int와 Integer가 같지만 다른것과 마찬가지다. void는 기본형이고 Void는 참조형이다. 제네릭 사용 시 반환 타입을 명시해야하는데 이때 기본형인 void를 사용할 수 없고 Void를 사용해야한다. 의미는 void와 똑같고, 인스턴스 생성 불가 또는 참조값이 존재하지 않음을 나타낸다.
Unit
코틀린에서 int 를 구분하지 않는 것과 같이 void도 두가지 타입이 있는 것이 아닌 Unit으로 두가지 상황 다 커버를 한다. Unit에 의미도 아무것도 반환하지 않는 반환 타입이다. 여기서 주의할 점은 코틀린이라고 해서 Unit을 Unit?으로 사용은 불가능하다. Unit 은 Unit이라는 값 단 하나만 갖기 때문이다.
Nothing
코틀린에는 Nothing이라는 타입도 존재하는데 Unit과 동일하게 값을 반환하지 않는 함수를 나타낼때 사용된다. 차이점은 Nothing 타입은 함수의 실행이 종료되더라도 기존에 호출했던 코드로 돌아가지 않으며 의도적으로 예외를 발생시킨다.
대표적으로는 TODO 함수가 있다.
들어가보면 다음과 같이 Nothing 타입을 반환하는것을 확인할 수 있다.