티스토리 뷰
//기본적으로 not null
var a: String = "abc" // Regular initialization means non-null by default
a = null // compilation error
//null이 들어올 수 있는 경우는 ? 으로 표현
var b: String? = "abc" // can be set to null
b = null // ok
print(b)
// 명확한 조건
val b: String? = "Kotlin"
if (b != null && b.length > 0) {
print("String of length ${b.length}")
} else {
print("Empty string")
}
// null이면 null을 표현
val a = "Kotlin"
val b: String? = null
println(a?.length) // null //Unnecessary safe call
println(b?.length) // 6
// chaining
bob?.department?.head?.name // chain 중 1개라도 null이라면 null
person?.department?.head = managersPool.getManager() // 왼쪽 chain이 모두 not null인 경우에만 오른쪽 값을 할당
// Elvis operator (?:)
val l = b?.length ?: -1 // 아래 코드와 동일한 역활을 한다.
val l: Int = if (b != null) b.length else -1
fun foo(node: Node): String? {
val parent = node.getParent() ?: return null
val name = node.getName() ?: throw IllegalArgumentException("name expected")
// ...
}
// !! operator
val l = b!!.length //null이면 NPE 발생 아니면 b의 length를 l에 할당
// safe casts
val aInt: Int? = a as? Int
val a = 2
val aInt: Int? = a as? Int
val b = "2"
val bInt: Int? = b as? Int
println(aInt) // 2
println(aInt) // null
// collections of a nullable type
val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull() // 크기가 큰 list에서는 어떤 list 인지에 따라서 성능차이가 많이 발생할 수 있다.
'Programming > Kotlin' 카테고리의 다른 글
Kotlin Reflection (0) | 2022.04.30 |
---|---|
Kotlin Generic (0) | 2022.04.30 |
Kotlin Loop (0) | 2022.04.23 |
Kotlin Conditions (0) | 2022.04.23 |
Kotlin Operator (0) | 2022.04.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Discriminate Mapping
- DI
- SmartLifecycle
- Sprint RetryTemplate
- java EqualsAndHashCode
- docker
- spring spel
- Property
- Akka
- JPA Criteria
- Join Table
- Typesafe Config
- Spring Registrar
- @Primary
- scikit-learn
- Query DSL
- java generic
- java Equals
- JPA
- Embedded Mapping
- Charles proxy
- Spring
- Registrar
- Criteria
- guava
- Mapping
- RetryTemplate
- Embeddable Mapping
- 복합키 Mapping
- Spring JDBC Template
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함