IT/Android

[Kotlin] 코틀린에서 !! 연산자의 의미

토마토조아 2019. 8. 16. 11:23
728x90

코틀린 공식 홈페이지를 가보면 내용을 볼 수 있다.

The !! Operator

The third option is for NPE-lovers: the not-null assertion operator (!!) converts any value to a non-null type and throws an exception if the value is null. We can write b!!, and this will return a non-null value of b(e.g., a String in our example) or throw an NPE if b is null:

ex) val l = b!!.length

Thus, if you want an NPE, you can have it, but you have to ask for it explicitly, and it does not appear out of the blue.

이 말을 보면 !! 연산자는 Null Pointer Exception 이 필요한 경우에 사용할 수 있다는 의미가 된다.
!! 연산자의 역할은 어떠한 값이든 Non-null 타입으로 변경하며, Null이 값으로 들어오면 exception을 발생시킨다고 되어 있다.

위 박스의 예제 코드처럼..

b의 length 가 null 이면 NPE가 발생하게 되는 것이다.

그래서 처음 문장에 NPE를 사랑하는 사람들에게 좋은 연산자라는 표현이 있는 것.

!! 연산자는 Null 값이 들어가서는 안되고, NPE가 필요한 경우에 사용할 수 있는 연산자라는 결론이 나온다.

728x90