1. Generic
1) Java로 비유하면 전통적인 collection Object / Object o = 10
Collection에 Generic 도입. List<String> list;
/*
public interface MutableList<E> {
var list: Array<E>
...
}
*/
fun main(){
testGenerics()
}
fun testGenerics(){
var list: MutableList<String> = mutableListOf()
list.add("월")
list.add("화")
list.add("수")
// list.add(5) 오류 발생
for (item in list){
println("${item}")
}
}
list라는 변수를 MutableList<String> type으로 지정.
mutableListof()는 new 생성자() 정도로 해석하면 된다.
2. Null
1) Null Safety
Android studio tool이 예외를 발생시켜 compile 되지 않도록 막아 줌
Kotlin에서는 예기치 못하는 Null에 대한 상황들을 방지하기 위하여 Null Safety 문법 처리함.
a는 non-null이라서 null 넣으면 오류가 뜨지만
b처럼 물음표를 넣으면 null 값이 들어감.
c 기본형 datatype도 사용 가능. Java는 불가능.
fun main(){
var one: One
if(1 > 2){
one = One()
}
// one.print()
var a:String
a = null
var b:String?
b = null
var c:Int?
c = null
}
2) 다 사용 가능
fun nullParameter(str: String?){
if(str != null){
var length = str.length
}
}
fun nullReturn(): String?{
return null
}
3) var resultNull: Int? = str.length 라고 쓰면 예외 발생함.
그래서 아래처럼 변수?. 하면 변수가 Null인지 체크해서 non-null이면 length가 호출되게 함.
fun testSafeCall(str: String?): Int?{
var resultNull: Int? = str?.length
return resultNull
}
4) Null값 대체하기
str 변수가 null이면 ?: 뒤에 나온 0 값이 대입된다.
Nullable: 변수를 Nullable 선언. var 변수명: datatype?
Safe Call: ?. 변수명?.명령어
Elvis Operator: var 변수1 = 변수2?.명령어?: 기본값 // 변수2가 null이면 null 값을 대체.
fun testElvis(str: String?): Int{
var resultNotNull: Int = str?.length?: 0
}
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Scope 함수 (0) | 2022.02.21 |
---|---|
[Kotlin] Lateinit, Lazy (0) | 2022.02.18 |
[Kotlin] 추상 Class (0) | 2022.02.17 |
[Kotlin] 상속과 확장 (0) | 2022.02.17 |
[Kotlin] 함수 (0) | 2022.02.17 |