[kotlin] 함수의 인자와 반환 타입의 다형성

코틀린에서 함수는 다형성을 지원하여 여러 타입의 인자를 받거나 여러 타입의 값을 반환할 수 있습니다. 이는 코드의 유연성을 높여주는 중요한 특징 중 하나입니다.

다형성을 이용한 인자의 다양한 타입

함수를 정의할 때 파라미터의 타입으로 특정 타입 대신 제네릭을 사용하여 다양한 타입의 값을 받을 수 있습니다. 예를 들어, List 컬렉션을 받는 함수를 다음과 같이 정의할 수 있습니다.

fun printList(list: List<Any>) {
    for (item in list) {
        println(item)
    }
}

이렇게 하면 printList 함수는 어떤 타입의 값을 포함한 List라도 받을 수 있습니다.

반환 타입의 다형성

또한 함수가 반환하는 값의 타입으로도 다형성을 적용할 수 있습니다. 예를 들어, 두 개의 인자를 받아 더한 값을 반환하는 add 함수를 다음과 같이 정의할 수 있습니다.

fun add(a: Any, b: Any): Any {
    return when {
        a is Int && b is Int -> a + b
        a is String && b is String -> "${a}${b}"
        else -> throw IllegalArgumentException("Unsupported argument types")
    }
}

이 함수는 Any를 반환 타입으로 사용하여 정수를 더한 경우에는 정수를, 문자열을 이어붙인 경우에는 문자열을 반환합니다.

요약

코틀린에서 함수의 다형성을 이용하여 인자와 반환 타입에 다양한 타입을 적용할 수 있습니다. 이를 통해 유연하고 범용적인 함수를 작성할 수 있으며, 코드의 재사용성과 일반성을 높일 수 있습니다.

이 기능은 코틀린의 강력한 특징 중 하나로, 제네릭과 함께 사용함으로써 보다 확장 가능한 코드를 작성할 수 있습니다.

참고문헌: 코틀린 공식 문서 - 제네릭