<aside>

제네릭은 클래스나 메서드에서 사용할 데이터의 타입을 나중에 지정할 수 있게 해 주는 기능이다

쉽게 말해 타입을 변수처럼 다룰 수 있게 해주는 문법!

사용 예시

1.제네릭 없이 작성한 코드

List list = new ArrayList();
list.add("hello");
list.add(123); // 문자열이 아닌 int도 들어감

String s = (String) list.get(0); // 강제 형변환 필요

1.제네릭 사용

List<String> list = new ArrayList<>();
list.add("hello");
// list.add(123); // 컴파일 에러! 안전함

String s = list.get(0); // 형변환 불필요

제네릭 클래스

class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

사용

Box<String> stringBox = new Box<>();
stringBox.setItem("hello");
String value = stringBox.getItem();