티스토리 뷰

ETC

Java & Kotlin 의 null 에 대해서

지닉슨 2022. 3. 9. 22:12

Compile Time vs Runtime

(사진 출처: baeldung)

컴파일 타임 (Compile Time)

개발자가 소스코드가 컴파일러를 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되는 (편집) 과정 (.java -> .class)

  • Input : 소스코드 등
  • Output : 컴파일된 코드

Compile Time Error

  • Syntax error
  • type check error

런타임 (Runtime)

사용자에 의해 컴파일이 끝난 응용프로그램이 동작되는 시점

Runtime Error

  • Division by zero
  • Dereferening a null pointer error
  • Runing out of memory error

Java 에서 null 의 문제점

  • 컴파일 타임 시점에서 해당 에러를 찾아내기 힘들다.
  • 복잡하게 null 이 함수들을 통해서 떠다닐 경우 정확히 어디에서 에러가 발생했는지 캐치하기 힘들다.
  • NPE (Null Pointer Exception) 을 발생시킬 위험성이 높다.
  • NPE 를 위한 null check 로직이 필요함에 따라 가독성 및 생산성이 떨어진다.

Kotlin nullable

코틀린의 타입 시스템은 코드에서 상위에서 보였던 null references 위험을 제거하는 것이 목표이다.

  • nullable 타입이 추가되면서 컴파일 타임에서 에러를 명시적으로 잡아낼 수 있어졌다.

Java vs Kotlin null 처리 비교

String a = null;
int b = 0;

if (a != null) {
  b = a.length();
} else {
  b = -1;
}
val a: String? = null
val b = b?.length ?: -1

'ETC' 카테고리의 다른 글

[Java] PSD to JPEG 변환 조사 및 구현  (0) 2022.01.15
Gatsby를 git page 연결  (0) 2019.03.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함