아이템 3 - 최대한 플랫폼 타입을 사용하지 말라
아이템 3 - 최대한 플랫폼 타입을 사용하지 말라를 정리한 내용입니다.
코틀린은 널 안정성(null-safety)를 지원하여 자바의 NPE를 많이 방지한다.
코틀린이 자바와 함께 연결되어 사용될때 NPE가 발생할 수 있다.
코틀린은 자바에서 @Nullable이 붙어 있으면 String?, @NotNull이면 String으로 사용하면 된다.
// 자바
public class JavaTest {
public String giveName() {
// ...
}
}- 자바에서 어노테이션이 붙어 있지 않은 경우 코틀린에서 안전하게 사용시 nullable로 가정하고 다루어야 한다.
- null이 아님이 확실하다면 코틀린에서는 not-null 단정인 !!를 붙인다.자바의 제네릭 타입을 코틀린에서 다룰때 항시 nullable임을 염두해 두어야 한다.
// 자바
public class UserRepo {
public List<User> getUsers() {
// ***
}
}// 코틀린
val users: List<User> = UserRepo().users!!.filterNotNull()val users: List<List<User>> = UserRepo().groupedUsers!!
.map { it!!.filterNotNull() }코틀린은 모든 타입을 nullable로 다루지 않고 특수하게 다루는데 이를 플랫폼 타입이라고 부른다.
플랫폼 타입 다른 프로그래밍 언어에서 전달되어서 nullable인지를 알 수 없는 타입이다.
플랫폼 타입은 String! 처럼 뒤에 ! 기호를 붙여서 표시하나 이 노테이션을 직접적으로 코드에 표시하지는 않는다.
자바를 코틀린과 함께 사용하고 자바 코드를 조작할 수 있다면 @Nullable, @NotNull을 사용하는게 좋다.
코틀린에서도 플랫폼 타입은 안전하지 않으므로 빨리 제거하는게 좋다.
Last updated