티스토리 뷰

Kotlin

코틀린 제너릭 Kotlin Generics

IT Knowledge Share 2021. 7. 6. 19:33
반응형

제너릭의 개념에 대해 알아봅니다.

제너릭은 타입을 체크하는 기능을 하는데, 좀 더 풀어서 설명하면, 다양한 타입의 객체를 다루는 메소드나 컬렉션, 클래스에서 컴파일 시 타입을 체크해주는 역할을 합니다. 

 

개발자 스스로 제너릭을 만들어서 사용하는 경우 거의 없다고 보시면 됩니다. 제너릭을 어떻게 사용하는지 그 방법만 알아두시면 좋을 것 같습니다.

 

예문을 살펴보도록 합시다.

반응형
fun main(args: Array<String>){

    val list1 = listOf(1, 2, 3.5, "가")
    val b: String = list1[2].toString() 

    val list2 = listOf<String>("a", "b", "c")
    val c: String = list2[2]
    
     
}

다음의 메인 함수를 살펴보면, list1에는 여러 타입이 들어가 있습니다. Int, Float, String이 모두 들어가 있기 때문에, 변수 b의 타입을 String으로 선언해도 '형 변환'이 필요합니다.

'형 변환'은 '캐스팅'이라고도 부르며, 타입을 다른 타입으로 바꿔주는 것을 말합니다. list1[2]를 toString( ) 메소드를 사용해 Int 타입에서 String 타입으로 바꾸었습니다.

 

list1의 타입은 Any 타입이 됩니다. Any 타입은 최상위 타입으로 모든 타입의 부모 격이라고 이해하시면 됩니다. 부모가 Any 타입이고, 자식은 Int, Float, String 타입이 되는 것입니다.

 

list2의 경우, 꺽쇠 < >를 사용해서 어떤 타입이 들어갈지 미리 지칭합니다. 이러한 경우를 제너릭이라고 합니다. 제너릭은 타입을 확인하는 기능을 하는데, 이와 같이 꺽쇠 안에 미리 들어갈 타입을 지정하는 것입니다.

따라서 불필요한 형 변환도 필요가 없습니다. 이렇게 제너릭을 사용하면, 어떤 인자를 가져오던 String 타입을 보장받으며, 형 변환도 필요 없기 때문에 타입이 '안전'하다고 칭합니다.

 

반응형
댓글