[JAVA] Generic

JHJeong·2024년 4월 16일
0

제너릭(Generic)

자바에서 제너릭은 코드의 유연성과 타입 안전성을 향상시키는 중요한 기능이다. 제너릭을 사용하면 클래스, 인터페이스, 메소드를 다양한 타입의 객체들과 함께 사용할 수 있다. 이러한 특성은 코드 재사용성을 증가시키고, 컴파일 시간에 타입 체크를 통해 안정성을 높인다.

제너릭은 클래스나 메소드를 정의할 때 타입(Type)을 파라미터로 받을 수 있게 한다. 이를 통해 단 하나의 코드라인으로 다양한 타입의 객체들을 처리할 수 있는 유연성을 제공한다. 자바의 컬렉션 프레임워크에서 제너릭은 특히 유용하게 사용되며, "List", "Map", "Set"과 같은 인터페이스에서 제너릭을 통해 다양한 타입을 저장하고 처리할 수 있다.

제너릭을 사용하는 이유

  1. 타입 안정성 : 제너릭을 사용하면 컴파일 시점에 타입 체크를 수행하여, 잘못된 타입이 사용되는 것을 방지할 수 있다.
  2. 타입 캐스팅 제거 : 객체를 추출할 때 타입 캐스팅을 할 필요가 없어 코드가 간결해지고, 실행시간이 단축된다.
  3. 재사용성과 추상화 향상 : 하나의 코드로 다양한 타입의 객체들을 처리할 수 있기 때문에 코드의 재사용성이 향상된다.

제너릭 사용 예제

1. 제너릭을 사용한 제너릭 클래스

class Box<T> {
    private T t; // T stands for "Type"

    public void set(T t) {
        this.t = t;
    }

    public T get() {
        return t;
    }
    
}

public class Main {
    
    public static void main(String[] args) {
        Box<Integer> integerBox = new Box<>();
        integerBox.set(10);
        System.out.println("Integer Value: " + integerBox.get());
        
        Box<String> stringBox = new Box<>();
        stringBox.set("Hello World");
        System.out.println("String Value: " + stringBox.get());
    }
}

출력 결과
Integer Value: 10
String Value: Hello World

이 예제에서 Box 클래스는 타입 파라미터 T를 사용하여 정의된다. 이 클래스는 정수 또는 문자열 등 어떤 타입의 객체도 저장하고 반환할 수 있다.

2. 제너릭 메소드

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

    public static void main(String[] args) {
        Integer[] intArray = {1, 2, 3, 4, 5};
        String[] stringArray = {"Hello", "World", "Java", "Generic"};
        
        System.out.println("Integer Array:");
        printArray(intArray);
        
        System.out.println("String Array:");
        printArray(stringArray);
    }
}

출력 결과
Integer Array:
1
2
3
4
5
String Array:
Hello
World
Java
Generic

이 예제에서 printArray 메소드는 제너릭 타입 T를 사용하여 어떤 배열의 요소든 출력할 수 있다. 이는 메소드 하나로 다양한 타입의 배열을 처리할 수 있음을 보여준다.

자바의 제너릭 기능은 프로그램의 안정성을 높이고 코드의 재사용성을 향상시키는 데 도움을 준다. 제너릭을 통해 개발자는 보다 타입 안정하고 유지보수가 용이한 코드를 작성할 수 있다.

profile
이것저것하고 싶은 개발자

0개의 댓글