Generic은 "일반적인"이라는 의미를 갖고 있으며, 클래스 내부에서 사용할 데이터 타입을 외부에서 설정해 주는 것이다. 다양한 데이터를 다룰 때 데이터의 타입을 특정 타입으로 고정시켜 줄 수 있다.
List list = new ArrayList();
list.add("Java");
list.add("Python");
String str = (String)list.get(0);
String str1 = (String)list.get(1);
제네릭을 사용하지 않고 데이터를 가져올 경우 다시 특정 타입으로 변경해야 한다. 이런 경우에 제네릭을 사용하는데 특정 타입으로 제한하여 타입 안정성이 보장되며, 타입 체크와 형 변환을 생략할 수 있어 코드가 간결해진다.
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add(1); // 컴파일 에러
String 타입으로 지정했기 때문에 int값은 넣을 수 없다.