Kotlin/포스팅

코틀린 안전성

짜집퍼박사(짜박) 2023. 9. 21. 01:24

Kotlin은 여러 가지 기능을 통해 개발자가 보다 안전한 코드를 작성하도록 도와줍니다. 특히 null 안전성, 타입 안전성 등을 중점적으로 강조합니다. 아래는 Kotlin의 주요 안전성 특징들입니다:

1. Null 안전성 (Null Safety)

Kotlin은 기본적으로 모든 타입이 non-nullable로 설정됩니다. 즉, 변수에 null을 할당하려면 변수 타입 뒤에 ?를 붙여서 nullable로 선언해야 합니다.

var a: String = "Hello"
// a = null  // 컴파일 에러

var b: String? = "Hello"
b = null  // 가능

?., ?:, !! 연산자를 사용하여 nullable 변수를 안전하게 다룰 수 있습니다.

val length: Int? = b?.length  // b가 null이 아니면 길이를 반환, 아니면 null 반환
val safeLength: Int = b?.length ?: 0  // b가 null이면 0 반환
val forceUnwrap: Int = b!!.length  // b가 null이면 NPE 발생

 

2. 스마트 캐스팅 (Smart Casts)

변수의 타입을 확인한 후 해당 타입으로 안전하게 캐스팅합니다.

if (x is String) {
    // x는 이 블록 내에서 자동으로 String으로 캐스팅됩니다.
    println(x.length)
}

 

3. 봉인된 클래스 (Sealed Classes)

상속 가능한 클래스의 종류를 제한하여 안전성을 높입니다. 이로 인해 when 표현식에서 모든 경우를 처리하도록 강제될 수 있습니다.

sealed class Result
data class Success(val data: String) : Result()
object Failure : Result()

fun handle(result: Result) = when(result) {
    is Success -> println(result.data)
    is Failure -> println("Error!")
}

 

4. 데이터 클래스 (Data Classes)

data 키워드를 사용하여 클래스를 정의하면, equals(), hashCode(), toString() 등의 표준 함수가 자동으로 생성됩니다. 이는 객체의 안전한 비교와 표시를 도와줍니다.

5. 컬렉션 안전성

Kotlin의 컬렉션 라이브러리는 기본적으로 변경 불가능한 (immutable) 컬렉션을 제공합니다. 변경 가능한 컬렉션을 사용하려면 명시적으로 선택해야 합니다.

 

6, 타입 알리아스 (Type Aliases)

기존 타입에 대한 다른 이름을 제공하여 코드의 가독성과 안전성을 향상시킬 수 있습니다.

7. 확장 함수 (Extension Functions)

기존 클래스의 소스 코드를 변경하지 않고 새로운 기능을 추가할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 다중 플랫폼  (0) 2023.12.05
코틀린 상호 운용성  (0) 2023.10.06
코틀린 표현력  (0) 2023.09.24
코틀린 간결성  (0) 2023.09.24
코틀린 다중 패러다임  (0) 2023.09.20