더북(TheBook)

이 경우 이름에 널이 될 수 없는 값이 할당된 다음에 sayHello() 함수가 호출되므로 널 아님 단언도 적절한 해법이다. 하지만 컴파일러는 이 사용이 안전하다고 인식할 수 없기 때문에 sayHello() 안에서 변수 타입을 String으로 세분화하지 못한다. 따라서 널 아님 단언문을 사용해 컴파일러의 경고를 무시하는 것이 한 가지 해법이다. 하지만 이와 같은 경우라고 해도 널을 다룰 때 쓸 수 있는 덜 무딘 도구를 사용하거나 코드 제어 흐름을 고쳐 써서 컴파일러가 스마트 캐스트를 적용할 수 있게 하는 편이 더 낫다.

널 아님 단언문을 널이 될 수 없는 수신 객체에 대해 사용해도 오류로 간주되지 않는다. 하지만 이런 코드는 불필요하기 때문에 피해야 한다.

IDE 팁 ≡

인텔리J 코틀린 플러그인은 불필요한 !! 연산자를 강조하고 제거할 것을 제안하는 코드 인스펙션(inspection)을 제공한다.

다른 후위 연산자와 마찬가지로 널 아님 단언 연산자도 가장 높은 우선순위로 취급된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.