Kotlin Basic - typealias, !!, :?, ?.
by 볼빵빵오춘기typealias
- 복잡하거나 반복되는 타입 이름에 별칭(별명)을 붙여서 간단하게 사용하도록 해준다.
- 가독성 향상, 코드 의미 명확화, 긴 타입 축약 등에 유용하다.
- 실제 타입은 동일하지만, 의미적으로 구분지을 수 있다.
// 예제1
typealias Username = String // String을 Username 별칭으로 대체
fun main() {
// 특정 자료형이나 긴 클래스의 이름에 typealias를 이용하여 별칭을 붙여주면 코드를 줄일 수 있다.
var user: Username = "지니"
println("별칭으로 대체된 Username 타입을 이용하여 값을 출력해보기 -> ${user}")
}
// String이라는 기본 자료형에 Username이라는 새로운 이름(별칭)을 붙인 것이다.
// String 대신 Username을 사용할 수 있게된다.
// 실제로는 Username도 String이기 때문에 동작상 차이는 없지만, 코드의 의미가 더 명확해진다.
// 예제2
typealias UserMap = Map<String, List<Int>>
fun printUserData(data: UserMap) {
println(data)
}
// 긴 타입 이름을 UserMap으로 줄여 사용하면 가독성이 향상된다.
!!
- 널 강제 언래핑 연산자이다. (단정기호라고도 부른다.)
- nullable 타입에서 null이 아니라고 개발자가 직접 보장할 때 사용한다.
- 만약 null이면 런타임 시 NullPointerException(NPE) 발생한다.
var str2 : String? = "Hi Hi" // 타입이 String? 이므로 값에 null이 있을 수도 있는 상황
println("str2의 길이 : ${str2!!.length}") // str2의 길이 : 5 // str2가 확실히 null값이 아니므로 !! 사용함
?.
- 세이프콜 연산자라 부른다.
- null로 인한 예외를 방지하기 위해 사용되는 연산자이다.
(자바에서는 null인 객체에 접근하면 NullPointerException(NPE)가 발생하는데, 코틀린에서는 이런 위험을 줄이기 위해 ?. 세이프 콜 연산자를 사용한다.) - 삼항 연산자처럼 생각하면 된다.
(why? if~else구문으로 충분히 표현이 가능하기 때문 코틀린에서는 삼항 연산자를 지원하지 않는다.
// 세이프콜과 엘비스연산자(?:)를 사용하여 검사하는 코드
var str4 : String? = "아메리카노"
println("str4 ${str4} length : ${str4?.length ?: -1}") // str4 아메리카노 length : 5
str4 = null
println("str4 ${str4} length : ${str4?.length ?: -1}") // str4 null length : -1
정리하자면
문법 | 설명 | 주의점 |
typealias | 타입에 별칭을 붙여 가독성을 높이고 코드 간결화에 도움을 줌 | 동일한 이름이 존재하면 이름 충돌 주의 |
!! | null이 아님을 개발자가 보장하며 강제로 접근 | null일 경우 NullPointerException 발생 |
?. | 객체가 null이 아닐 때만 안전하게 프로퍼티/함수를 호출함 | 반환값이 null일 수 있으므로 후처리 필요 |
?: | null일 경우 기본값을 반환하는 엘비스 연산자(Elvis Operator) | 기본값을 반드시 제공해야 함 |
'👩🏻💻 About 프로그래밍 > Kotlin' 카테고리의 다른 글
Kotlin Basic - 연산자 종류 (0) | 2025.06.08 |
---|---|
Kotlin Basic - 스마트 캐스트(Smart Cast), Number형, is 연산자, as 연산자 (1) | 2025.06.08 |
Kotlin Basic - 코틀린의 기본 자료형과 저장장소(자바와 비교) (1) | 2025.06.05 |
Kotlin Basic - 자료형(기본자료형, Nullable, Any, Unit, Nothing) (0) | 2025.06.05 |
Kotlin Basic - 변수(variable), val, var (1) | 2025.06.04 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기