- 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할 수 있도록 하기 위해서 만들어진것
제네릭의 일반적인 사용
- 앵글 브래킷( <> ) 사이에 형식 매개 변수를 사용해 선언
- 형식 매개변수는 자료형을 대표하는 용어로 T(자료형 혹은 타입을 대표함)와 같이 특정 영문의 대문자로 사용
- 형식 매개변수명은 정해진 것은 아니나 관례적으로 T를 사용
형식 매개변수의 이름
형식 매개변수 이름
- 자료형이 추론 가능한 경우 앵글 브라켓 표현 생략
class Box<T>(t: T) { // 제네릭을 사용해 형식 매개변수를 받아 name에 저장
var name = t
}
val box3 = Box(1) // 1은 Int형이므로 Box<Int>로 유추 가능
val box4 = Box("Hello") // "Hello"은 String형이므로 Box<String>로 유추함
형식 매개변수를 한 개 이상 받는 클래스
- 인스턴스를 생성하는 시점에서 클래스의 자료형을 정하게 된다.
- 제네릭 클래스 내에 메서드에도 다음과 같이 형식 매개변수를 사용