← 질문 목록
#82깊이 0

널 검사를 했는데도 안전 호출이 필요한 때는?

언어 · 런타임심화언어 의미론

검사와 사용 사이에 값이 바뀔 수 있거나 getter 결과가 달라질 수 있으면 컴파일러가 스마트 캐스트를 보장하지 않는다. 지역 val로 고정하거나 ?.로 접근해야 한다.

기준스마트 캐스트 가능안전 호출 필요
값 안정성지역 val·안정된 var변경 가능 프로퍼티
재조회 결과같다고 증명달라질 수 있음

Kotlin은 String과 String?를 다른 타입으로 취급한다. 안전 호출과 Elvis 연산자는 null 경로를 명시한다. !!는 null이면 런타임 예외를 던져 컴파일 시 안전성을 포기한다.

Java에서 온 플랫폼 타입은 널 가능성이 타입에 확정되지 않는다. 경계에서 어노테이션과 검증으로 불확실성을 좁혀야 내부의 널 안전성이 유지된다.

안전 호출을 길게 잇는 방식은 실패 원인을 숨길 수 있다. 반드시 있어야 하는 값은 초기에 검사하고 의미 있는 오류로 바꾸는 편이 낫다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

널 검사를 했는데도 안전 호출이 필요한 때는?