자바에서는 타입 캐스팅 연산자인 (String) obj 를 덕지덕지 붙여야 했지만, 코틀린 컴파일러는 코드의 흐름을 스스로 이해할 정도로 매우 똑똑합니다.
개발자가 is 키워드로 타입을 확인했거나 != null 로 안전함을 증명했다면, 해당 if 블록 내부에서는 컴파일러가 알아서 타입을 변환(스마트 캐스트) 해줍니다.
코틀린 코드에 !! (Not-null Assertion) 연산자가 많다면 그건 코틀린을 자바처럼 짜고 있다는 증거입니다. !!는 컴파일러에게 "나를 믿고 null 검사를 무시해!" 라고 억지를 부리는 것과 같으며, 만약 null이 들어오면 여지없이 앱이 폭발(NPE)하므로 웬만해선 사용을 금지해야 합니다.
| 문법 / 키워드 | 동작 방식 | 위험도 |
|---|---|---|
| 스마트 캐스트 (if + is) | if문으로 검사하면 블록 안에서 자동으로 형변환됨. |
가장 안전함 |
| 안전한 캐스트 (as?) | 캐스팅에 실패하면 크래시를 내지 않고 null을 반환함. |
안전함 |
| 강제 캐스트 / 단언 (as / !!) | 무조건 캐스팅하거나 무조건 null이 아니라고 우김. | 매우 높음 (NPE 발생) |