- 자바에서는 모든 것이 nullable일 수 있으므로 최대한 안전하게 접근한다면, 이를 nullable로 가정하고 다루어야 합니다. 하지만 어떤 메서드는 null 을 리턴하지 않을 것이 확실할 수 있습니다. 이러한 경우에는 마지막에 not-null 단정을 나타내는 !! 를 붙입니다.
- nullable과 관련하여 자주 문제가 되는 부분은 바로 자바의 제네릭 타입입니다.
- 그래서 코틀린은 자바 등의 다른 프로그래밍 언어에서 넘어온 타입들을 특수하게 다룹 니다. 이러한 타입을 플랫폼 타입(platform type) 5 이라고 부릅니다.
- 그래서 코틀린은 자바 등의 다른 프로그래밍 언어에서 넘어온 타입들을 특수하게 다룹 니다. 이러한 타입을 플랫폼 타입(platform type) 5 이라고 부릅니다.
- 플랫폼 타입은 String! 처럼 타입 이름 뒤에 ! 기호를 붙여서 표기합니다. 물론 이러한 노테이션이 직접적으로 코드에 나타나지는 않습니다.
- 자바를 코틀린과 함께 사용할 때, 자바 코드를 직접 조작할 수 있다면, 가능한 @Nullable 과 @NotNull 어노테이션을 붙여서 사용하기 바랍니다.
- 안드로이드 개발에서 코틀린을 메인 언어(first-class language)로 변경했을 때, 가장 중요한 변경 사항으로 이러한 어노테이션들이 언급되고 있습니다. 이러한 어노테이션들이 붙어 있어서, 안드로이드 API가 코틀린과 친화적이라고 불리는 것입니다.
- 대체적으로 JSR 305의 @ParametersAreNonnullByDefault 어노테이션 등을 활용하면, 자바에서도 디폴트로 파라미터가 널이 아니라는 것을 보장할 수 있습 니다.
- 이처럼 플랫폼 타입이 전파(다른 곳에서 사용)되는 일은 굉장히 위험합니다. 항상 위험을 내포하고 있으므로, 안전한 코드를 원한다면 이런 부분을 제거하는 것이 좋습니다.
- 다른 프로그래밍 언어에서 와서 nullable 여부를 알 수 없는 타입을 플랫폼 타입이라고 부릅니다.
- 이러한 플랫폼 타입을 사용하는 코드는 해당 부분만 위험할 뿐만 아니라, 이를 활용하는 곳까지 영향을 줄 수 있는 위험한 코드입니다.
- 따라서 이런 코드를 사용하고 있다면 빨리 해당 코드를 제거하는 것이 좋습니다.
- 또한 연결되어 있는 자바 생성자, 메서드, 필드에 nullable 여부를 지정하는 어노테이션을 활용하는 것도 좋습니다.