JAVA/포스팅

자바 제네릭스(Generics)

짜집퍼박사(짜박) 2023. 11. 19. 00:07

자바에서의 제네릭스(Generics)는 타입 안전성을 제공하기 위한 프로그래밍 기법입니다. 제네릭스를 사용하면 컴파일러가 코드에 대한 강력한 타입 체크를 수행하게 되어, 실행 중에 발생할 수 있는 타입 관련 오류를 미리 방지할 수 있습니다. 이를 통해 코드의 안정성과 가독성을 향상시킬 수 있습니다.

 

제네릭 클래스와 인터페이스

 

1. 제네릭 클래스 (Generic Class)

클래스를 선언할 때, 타입 파라미터를 사용하여 클래스 내부에서 사용될 타입을 지정합니다.
예를 들어, Box<T>는 어떤 타입의 객체도 담을 수 있는 상자를 나타냅니다.

public class Box<T> {
    private T value;

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

 

2. 제네릭 메서드 (Generic Method)

메서드를 선언할 때, 타입 파라미터를 사용하여 메서드 내부에서 사용될 타입을 지정할 수 있습니다.

public class GenericMethods {
    public <T> void printValue(T value) {
        System.out.println("Value: " + value);
    }
}

 

 

제네릭의 이점

 

1. 타입 안전성 (Type Safety)

컴파일러가 제네릭 코드에 대해 타입 체크를 수행하므로, 실행 중에 발생할 수 있는 타입 관련 오류를 방지합니다.

 

2. 코드의 재사용성

제네릭을 사용하면 여러 종류의 데이터 타입에 대해 동일한 코드를 사용할 수 있어 재사용성이 높아집니다.

 

3. 성능 개선

일반적으로 제네릭은 실행 시간에 형 변환을 수행하지 않기 때문에 성능을 향상시킬 수 있습니다.

 

제네릭의 예제

public class GenericExample {
    public static void main(String[] args) {
        // 제네릭 클래스 사용
        Box<String> stringBox = new Box<>();
        stringBox.setValue("Hello, Generics!");
        System.out.println("String Value: " + stringBox.getValue());

        Box<Integer> intBox = new Box<>();
        intBox.setValue(42);
        System.out.println("Integer Value: " + intBox.getValue());

        // 제네릭 메서드 사용
        GenericMethods genericMethods = new GenericMethods();
        genericMethods.printValue("Generic Method Example");
        genericMethods.printValue(123);
    }
}

위의 예제에서 Box 클래스와 GenericMethods 클래스는 제네릭을 사용하여 다양한 타입에 대해 작동할 수 있습니다. 이를 통해 코드의 유연성과 안정성이 증가합니다.

 

With ChatGPT