[kotlin] 코틀린에서 제네릭 타입 경계(Bounds)란 무엇인가?

이것은 다음과 같이 표현됩니다.

fun <T : SomeInterface> someFunction(t: T) {
    // 함수 내용
}

위 코드에서 TSomeInterface를 구현한 클래스여야만 인수로 전달될 수 있습니다. 따라서 제네릭 제약을 사용함으로써 컴파일 시점에서 타입 안정성을 보장할 수 있습니다.

이 외에도 T가 특정 클래스를 상속받도록 강제할 수도 있습니다. 이때에는 T의 상위 클래스를 제한하기 위해 : 뒤에 상위 클래스를 지정하면 됩니다.

이것은 코틀린에서 강력한 타입 안정성을 제공하며, 런타임 시에 발생할 수 있는 에러를 컴파일 시점에 방지할 수 있도록 도와줍니다.

참고 문헌:

  1. Kotlin 공식 문서: https://kotlinlang.org/docs/generics.html#upper-bounds