Java에서와 마찬가지로 Kotlin도 Genenric을 지원하는데요.

오늘은 Kotlin에서의 Generic에 대해 정리해 보겠습니다.

1.  Class에서의 Generic

우선 Generic이 무엇인지 간단히 알아보도록 하겠습니다.

Generic은 class를 사용하는 시점에, class에서 사용할 타입을 지정할 수 있도록 하는 것 인데요.

 

아래에서는 class Person을 객체화 하는 시점에,

처음에는 외부에서 String이라는 타입을 정해 주었고,

다음에는 Int라는 타입을 정해서 사용해 주었습니다.

(원래 Java에서는 기본 데이터타입은 올 수 없었는데요, Kotlin에서는 모두가 객체로 참조형이기에 그런 제한은 없습니다)

 

 

아래와 같이 두개를 사용하는 것도 가능합니다.

마치 함수의 인자 넣는 것처럼 사용하는 것이지요.

또한 세번째 코드에서 볼 수 있듯이, 추측할 수 있는 타입에 대해서는 Generic을 생략해 주어도 됩니다.

 

 

<참고> Naming Convention

Generic에 사용되는 기호는 보통 T를 많이 사용하는데요.

T, S, U, V 를 차례로 사용하는 경우가 많습니다.

(이 순서를 지키지 않는다고 컴파일 에러가 나지는 않습니다.

그냥 K가 Key, V가 Value, R이 Receiver로 사용되는 것과 같이 관습적인 것일 뿐이긴 합니다.)

 

 

2. Function에서의 Generic

Function에서도 Generic 사용이 가능한데요.

Generic을 붙이는 위치가 Java에서와는 다르므로 주의가 필요합니다.

또한 추정할 수 있는 타입에 대해서는 마지막 코드에서 볼 수 있듯이,

호출시 생략이 가능합니다.

 

 

3. Generic에 있어서의 제한

3-1. Upper Bounds

Generic으로 들어올 수 있는 타입에 제한을 둘 수 있는데요.

":" 뒤에 제한을 둘 타입을 적어주어서, 

그 타입이거나 그 타입의 자식들만 올 수 있도록 할 수 있는데요.

이것을 UpperBounds라고 합니다.

3-2. Where Bounds

UpperBounds이외에도 다른 제한을 두고자 한다면 where문을 사용하면 됩니다.

개인적으로는 아직 이정도를 사용해 보지는 못했지만,

우선은 아래와 같은 사용도 가능하다 정도로 알고 있으면 될 것 같습니다.

 

 

이상으로 Kotlin에서의 Generic사용의 기본적인 부분들에 대해서 정리해 보았습니다.

좀 더 필요한 내용이나 더욱 좋은 내용이 있다면 이 글에 추가하도록 하겠습니다.

 

+ Recent posts