LG CNS AM CAMP - Java(제네릭)

광부·2025년 1월 14일

LG CNS AM INSPIRE 1기

목록 보기
6/16
post-thumbnail

제네릭(Generic)은 클래스나 메서드에서 사용할 데이터 타입을 컴파일 단계에서 지정된 타입 매개변수를 사용하여 타입 체크를 수행하고, 컴파일 단계에서 타입 불일치를 처리할 수 있다.
즉, 실행시에 사용자가 선택한 데이터 타입으로 클래스나 메서드를 사용할 수 있고, 재사용성과 안정성이 높아진다.

타입 매개변수

  • 클래스나 메서드 정의 시, 특정 데이터 타입 대신 관례로 아래의 기호를 사용한다.
  • T: Type,
  • E: Element,
  • K: Key,
  • V: Value
    제너릭 클래스 예시
public class Box<T> {
    private T item;

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

    public T getItem() {
        return item;
    }
}

public class Main {
    public static void main(String[] args) {
        Box<String> stringBox = new Box<>();
        stringBox.setItem("Hello");
        System.out.println(stringBox.getItem());

        Box<Integer> intBox = new Box<>();
        intBox.setItem(123);
        System.out.println(intBox.getItem());
    }
}

제네릭 메서드 예시

public class Utility {
    public static <T> void printArray(T[] array) {
        for (T item : array) {
            System.out.println(item);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Integer[] intArray = {1, 2, 3};
        String[] strArray = {"A", "B", "C"};

        Utility.printArray(intArray); // 출력: 1, 2, 3
        Utility.printArray(strArray); // 출력: A, B, C
    }
}

제네릭 타입 범위 제한

  • ?: 모든 타입을 받을 수 있음
  • ? extends T: T 타입 또는 그 하위 타입만 허용
  • ? super T: T 타입 또는 그 상위 타입만 허용

제네릭과 상속을 잘 활용한다면 CRUD같이 객체의 기본적인 공통기능들을 한곳에 정의하고, 공통 CRUD로직을 만들 수 있다.

profile
백엔드 주니어 개발자

0개의 댓글