7월 17일 - 제네릭

Yullgiii·2024년 7월 17일
0
post-thumbnail

제네릭

자바에서 제네릭(Generic)은 클래스나 메서드를 선언할 때 사용할 데이터 타입을 나중에 지정할 수 있도록 하는 기능이다. 제네릭을 사용하면 코드의 재사용성을 높이고, 컴파일 시 타입 체크를 통해 런타임 에러를 줄일 수 있다.

제네릭의 장점

  1. 타입 안정성: 컴파일 시 타입을 체크하여 타입 오류를 방지할 수 있다.
  2. 코드 재사용성: 다양한 타입에 대해 하나의 클래스나 메서드를 사용할 수 있어 코드 재사용성이 높아진다.
  3. 가독성 향상: 타입 캐스팅을 줄여 코드의 가독성을 높일 수 있다.

제네릭 사용 예제

제네릭 클래스

제네릭 클래스를 정의하여 다양한 타입의 데이터를 처리할 수 있다.

public class Box<T> {
    private T item;

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

    public T getItem() {
        return item;
    }
}

Box 클래스는 제네릭 타입 T를 사용하여 어떤 타입의 아이템도 저장할 수 있다.

제네릭 클래스 사용

코드 복사
public class Main {
    public static void main(String[] args) {
        Box<String> stringBox = new Box<>();
        stringBox.setItem("Hello");
        System.out.println(stringBox.getItem()); // 출력: Hello

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

위 예제에서 Box 클래스는 String 타입과 Integer 타입에 대해 각각 인스턴스를 생성하여 사용한다.

제네릭 메서드

제네릭 메서드를 정의하여 다양한 타입의 데이터를 처리할 수 있다.

public class Util {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

제네릭 메서드 사용

public class Main {
    public static void main(String[] args) {
        Integer[] intArray = {1, 2, 3, 4, 5};
        String[] stringArray = {"Hello", "World"};

        Util.printArray(intArray); // 출력: 1 2 3 4 5 
        Util.printArray(stringArray); // 출력: Hello World 
    }
}

제네릭 타입 제한

제네릭 타입에 제한을 걸어 특정 타입만 사용하도록 할 수 있다. extends 키워드를 사용하여 상한 경계를 지정한다.

public class NumberBox<T extends Number> {
    private T number;

    public void setNumber(T number) {
        this.number = number;
    }

    public T getNumber() {
        return number;
    }
}

제네릭 타입 제한 사용

public class Main {
    public static void main(String[] args) {
        NumberBox<Integer> intBox = new NumberBox<>();
        intBox.setNumber(123);
        System.out.println(intBox.getNumber()); // 출력: 123

        NumberBox<Double> doubleBox = new NumberBox<>();
        doubleBox.setNumber(45.67);
        System.out.println(doubleBox.getNumber()); // 출력: 45.67

        // NumberBox<String> stringBox = new NumberBox<>(); // 오류: String은 Number를 상속하지 않음
    }
}

So...

제네릭은 자바에서 타입 안정성과 코드 재사용성을 높이는 데 매우 유용한 기능이다. 제네릭을 사용하면 다양한 타입을 하나의 클래스나 메서드에서 처리할 수 있어 코드의 중복을 줄이고, 컴파일 시 타입 체크를 통해 안전성을 높일 수 있다. 이번 TIL에서는 제네릭 클래스, 제네릭 메서드, 그리고 제네릭 타입 제한에 대해 알아보았다. 제네릭을 적절히 활용하여 더 안전하고 재사용성 높은 코드를 작성할 수 있을 것이다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글