제네릭(Generic)은 코드블럭 내부에서 쓸 자료형을 외부에서 지정하는 기법. 여러가지 자료형을 허용하고 싶을 때 Object로 선언해버리면 깔끔하지만, 그렇게하면 원하지 않는 자료형이 입력되었을 때의 오류를 컴파일 시점에 잡아낼 수 없음. * 장점 1. 컴파일 시 강한 타입 체크 가능. - 실행시 타입 에러가 나는 것보다 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지 2. 타입 변환(castring)을 제거. - 비제네릭 코드는 불필요하게 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미친다. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // 타입 변환이 필요 List list2 ..