제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다.
컴파일 시 강한 타입 체크를 할 수 있다.
자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해, 제네릭 코드에 대해 강한 타입 체크를 한다.
→ 실행 시 타입 에러가 나는 것보다는, 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋다.
타입 변환(Casting)을 제거한다.
비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미친다.
String
으로 타입 변환을 해야 한다.List list = new ArrayList();
list.add("hello");
String str = **(String)** list.get(0); // 타입 변환을 해야 한다.
→ 다음과 같은 제네릭 코드로 수정하면, List에 저장되는 요소를 String
타입으로 국한하기 때문에, 타입 변환을 할 필요가 없어 프로그램 성능이 향상된다.
List**<String>** list = new ArrayList**<String>**();
list.add("hello");
String str = list.get(0); // 타입 변환을 하지 않는다.
class<T>
, interface<T>
)제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.