Published 2022. 2. 18. 12:14

 

 

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
복사했습니다!