데이터의 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 지정하는 기법
변수를 선언할때 변수의 타입을 지정해주듯 제네릭은 객체(Object)에 타입을 지정해주는것
ArrayList<String> list = new ArrayList<>();
// <String> 이부분이 제네릭
다이아몬드 연산자(<>)안에 식별자 기호를 지정해서 파라미터화 한 것
제네릭을 이용한 클래스나 메소드를 설계할 때 사용
예시코드
public class GenericTest<T> {
private T data;
public GenericTest(T data) {
this.data = data;
}
public T getData() {
return data;
}
public static void main(String[] args) {
GenericTest<String> strGen = new GenericTest<>(new String("hello world"));
System.out.println(strGen.getData()); // "hello world"
GenericTest<Integer> intGen = new GenericTest<>(3);
System.out.println(intGen.getData()); // 3
}
}
제네릭을 사용하면 잘못된 타입을 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다.
즉, 관리하기가 편하다.
비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.