자바 개발자를 위한 코틀린 입문
2강. 코틀린에서 null을 다루는 방법
String.startWith()
함수 만들어보기코틀린에서는 null이 가능한 타입을 완전히 다르게 취급한다!
null이 가능한 타입만을 위한 기능은 없나?!
.?
null이 아니면 실행하고, null이면 실행하지 않는다. (그대로 null)
null이 들어갈 수 있는 변수에 대해서는 .
을 바로 쓸 수 없다고 에러가 난다.
Safe Call(?.
) 을 사용하면 null이 아닌 경우에만 호출하게 된다.
str
이 null이면 null을 반환한다.
?:
앞의 연산 결과가 null이면 뒤의 값을 사용한다.
!!.
nullable type이지만, 아무리 생각해도 null이 될 수 없는 경우에 사용한다.
이 변수는 절대 null이 아니라는 뜻이다.
null이 들어오면 런타임 에러가 발생한다.
정말 null이 아닌 게 확실한 경우에만 널 아님 단언!!
을 사용해야 한다.
코틀린에서 자바 코드를 가져다 사용할 때 어떻게 처리될까?
Person
객체의 name
에 @Nullable
어노테이션이 있으면 컴파일 오류가 발생한다.
@NotNull
어노테이션이 있을 때는 괜찮다.
이렇게 null에 대한 어노테이션 정보를 코틀린이 이해한다.
하지만 @Nullable
과 @NotNull
이 없다면 코틀린에서는 이 값이 nullable인지 non-nullable인지 알 수가 없다.
코틀린이 null 관련 정보를 알 수 없는 타입을 말한다.
Runtime 시 Exception이 날 수 있다.
그래서 코틀린에서 자바 코드를 사용할 때는 null 관련 정보를 꼼꼼하게 작성해줘야 한다.
애당초 그런게 작성되어 있지 않은 라이브러리를 가져다 써야한다면 그 라이브러리를 열어서 이 값에 null이 들어갈 수 있는건지, 없는건지 확인을 하면 좋다.
그 다음에 최초의 코틀린에서 자바 라이브러리를 가져다 쓴 지점을 랩핑해서 단일 지점으로 만듦으로써 추후에 이슈가 났을 때 보다 쉽게 대응할 수 있게 만들면 좋다.
(마지막 문장 무슨 말인지 이해가 안가서 Chat GPT에게 설명해달라고 함... 코틀린에서 관리할 수 있도록 공통 함수를 만들라는 것으로 이해했다.)
📑 출처
- 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) (인프런/최태현)