728x90
- 코틀린에서는 null-safety 매커니즘으로 인해 NPE 를 거의 찾아보기 힘들다.
- null 관련 오류를 방지하기 위한 코틀린의 핵심 기능 중 하나
- 타입 시스템을 통해 null 참조를 엄격히 제어하여, 가능한 실행 시간 오류를 컴파일 시간에 잡아낼 수 있게 한다.
- 코틀린에서 변수를 선언할 때, 변수가 null 을 받을 수 있는지 아닌지를 명시적으로 선언해야 한다.
- 변수 타입 뒤에 ? 를 붙이면 그 변수는 null 값을 가질 수 있다고 선언하는 것
- 코틀린은 자바 등의 다른 프로그래밍 언어에서 넘어온 타입들을 특수하게 다룹니다. 이러한 타입을 플랫폼 타입 이라고 부른다.
- 자바와 코틀린 사이의 상호 운용성을 위헤 도입된 개념
- 코틀린은 자체적으로 nill 안정성을 엄격하게 관리하지만, 자바 코드는 코틀린처럼 null 가능성을 명시적으로 표현하지 않는다.
- 때문에 자바 코트로부터 가져온 타입의 null 가능성에 대해 코틀린 컴파일러가 알 수 없는 경우가 있다.
- 이런 타입들을 플랫폼 타입이라고 한다.
- 플랫폼 타입은 코틀린에서 null 검사를 강제하지 않는다. 즉 개발자가 nullable 로 처리할지, non-null 로 처리할지 결정할 수 있다.
- 이는 자바와 코틀린 간의 상호운용성을 유지하면서도, 코틀린의 타입시스템 내에서 최대한 유연하게 작업할 수 잇게 해준다.
- 자바를 코틀린과 함께 사용할 때, 자바 코드를 직접 조작할 수 있다면, 가능한 @Nullable @NotNull 어노테이션을 붙여서 사용하기 바랍니다.
- inferred 타입(추론된 타입)
- 프로그래밍 언에에서 변수나 표현식의 타입이 코드를 작성하는 시점에 명시적으로 선언되지 않고, 컴파일러에 의해 자동으로 결졍되는 타입
- ex) val name = " injin Jeong" // String 타입이 추론
정리
- 다른 프로그래밍 언어에서 와서 nullable 여부를 알 수 없는 타입을 플랫폼 타입이라고 부릅니다.
- NPE 문제 등으로 인하여 위험하고, 이를 활용하는 곳까지 영향을 줄 수 있는 위험한 코드이다.
- 이런 코드를 사용하고 있다면 빨리 해당 코드를 제거하는 것이 좋다.
- 연결되어 있는 자바 생성자, 메서드, 필드에 nullable 여부를 지정하는 어노테이션을 활용하는 것도 좋다. 이러한 정보는 코틀린 개발자뿐만 아니라 자바 개발자에게도 유용한 정보이다.
728x90
'공부 > 이펙티브코틀린' 카테고리의 다른 글
아이템 5 - 예외를 활용해 코드에 제한을 걸어라 (0) | 2024.03.31 |
---|---|
아이템 4 - inferred 타입으로 리턴하지 말라 (0) | 2024.03.31 |
아이템 2 - 변수의 스코프를 최소화하라 (0) | 2024.03.25 |
아이템 52 - mutable 컬렉션 사용을 고려하라 (0) | 2024.03.25 |
아이템 1 - 가변성을 제한하라 (0) | 2024.03.23 |
댓글