1. 정의 - 타입을 일반화 하는 것을 의미 - 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것 - class / interface / method 등의 타입을 파라미터로 사용할 수 있게 해주는 역할 - Java 5 부터 추가된 개념 ex) List list = new ArrayList(); // 는 diamond라고도 하고 제네릭 표현식임 2. 사용하는 이유 1) 재사용성 증가 : 여러 타입의 파라미터를 삽입해 객체를 생성할 수 있기 때문에 코드를 간결하게 하고, 재사용성을 높인다 2) 컴파일 시 타입 에러 발견 가능 : 컴파일시 잘못 사용되는 문제점을 발견할 수 있기 때문에 런타임 단계에서 발견 될 가능성을 방지한다 3) 컴파일러가 타입 변환 수행: 컴파일 단계에서 타입 캐스..