Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- ECS
- mirror maker2
- cd
- consumer
- Entity
- K8s
- QueryDSL
- spring kafka
- Kotlin
- PAGING
- producer
- CI
- topic생성
- JPA
- CodePipeline
- mysql
- git
- Kubernetes
- centos7
- spring
- Spring JPA
- transactionaleventlistener
- Spring Data JPA
- AWS
- entity graph
- offsetdatetime
- bean
- API
- Streams
- kafka
Archives
- Today
- Total
Yebali
Kotlin의 nullable변수 처리 본문
코틀린에서는 null을 허용하는 nullable 변수가 별도로 존재한다.
이런 변수들을 일일이 if로 체크해서 로직을 하는 것은 아름답지 못할 수 있다.
다른 방법으로 null을 처리하는 방법을 알아보자.
Nullable 변수 처리
null을 처리하는 방법은 아래와 같이 몇가지가 있다
- ?. (null safe operator)
- ?: (elvis operator)
- !!. (non-null assertion operator)
?. (null safe operater)
참조 연산자를 실행하기 전, 객체의 null 여부를 확인부터 하고 null이라면 뒤따라 오는 연산을 실행하지 않는 연산자
fun main() {
var a: String? = null
println(a?.toUpperCase()) // 'null' 출력
}
?: (elvis operator)
객체가 null이 아니라면 그대로 사용하지만 null이라면 연산자 우측의 default 객체를 사용한다.
fun main() {
var a: String? = null
println(a?:"default".toUpperCase()) // 'DEFAULT' 출력
}
!!. (non-null assertion operator)
참조 연산자를 사용 할때 null여부를 컴파일시 null 체크를 하지 않고 코드를 실행한다.
런타임시 null pointer Exception을 의도적으로 발생시킬 수 있다.
fun main() {
var a: String? = null
println(a!!.toUpperCase()) // null pointer Exception 발생
}
스코프 함수와 같이 사용하기
null safe 연산자는 스코프 함수와 같이 사용하면 더욱 편리하다.
if 연산자 대신 사용하면 좀 더 깔끔한 코드를 구현 할 수 있다.
fun main() {
var a: String? = null
var b: String? = "Kotlin"
// a가 null임으로 스코프 함수 내의 구문이 동작하지 않음.
a?.run {
println(toUpperCase())
println(toLowerCase())
}
b?.run {
println(toUpperCase())
println(toLowerCase())
}
}
'Kotlin' 카테고리의 다른 글
Kotlin의 Collections (0) | 2021.10.31 |
---|---|
Kotlin의 Data/Enum 클래스 (0) | 2021.09.22 |
Kotlin의 제너릭 (0) | 2021.09.22 |
Kotlin의 Static Method와 Function (0) | 2021.09.22 |
Kotlin의 스코프 함수 (0) | 2021.09.22 |