제네릭의 핵심은 사용할 타입을 미리 정하지 않는다는 점이다.
제네릭의 핵심은 사용할 타입을 미리 정하지 않고, 객체를 생성하는 시점에 타입을 결정하는 것이다.
클래스 내부에서 사용하는 타입을 클래스를 정의하는 시점에 결정하는 것이 아니라, 실제 사용하는 생성 시점에 타입을 결정한다.
제네릭은 메서드의 매개변수와 인수의 관계로 이해하면 쉽다.
용어 정리
- 제네릭 타입: 클래스나 인터페이스를 정의할 때 타입 매개변수를 사용하는 것
제네릭 클래스, 제네릭 인터페이스 모두 제네릭 타입이다.
- 타입 매개변수: GenericBox의 T
- 타입인자: GenericBox의 String
객체 생성 시 실제로 전달하는 타입
제네릭의 명명 관례
타입 매개변수는 일반적인 변수명처럼 소문자로 작성해도 문제는 없다.
다만, 일반적으로 대문자를 사용하고 용도에 맞는 단어의 첫글자를 사용하는 관레가 있다.
- E: Element
- K: Key
- N: Number
- T: Type
- V: Value
- S, U, V etc - 2nd, 3rd, 4th...
[정리]
- 제네릭은 사용할 타입을 클래스를 정의하는 시점이 아니라 객체를 생성하는 시점에 결정한다.
- 타입 매개변수는 GenericBox의 T처럼 타입을 대신하는 변수이다.
- 타입 인자는 GenericBox의 String처럼 실제 전달되는 타입이다.
- 제네릭을 사용하면 코드 재사용성과 타입 안정성을 함께 얻을 수 있다.
- 타입 매개변수는 관례적으로 T, E, K, V 등의 대문자를 사용한다.