Programming/Java

자바의 제네릭스(Generics)와 열거형(Enum)

vita12321 2023. 8. 7. 15:04
728x90
반응형

자바의 제네릭스(Generics) 열거형(Enum) 프로그래머로 하여금 코드의 타입 안전성과 유연성을 높여 주는 중요한 기능입니다. 글에서는 제네릭스와 열거형의 개념, 활용법, 기본 사용 방법 자바 프로그래밍에서 더욱 타입 안전하고 효과적으로 사용하기 위한 방법론을 상세히 논의하겠습니다.


 

1. 제네릭스(Generics) 개념과 활용법

  • 제네릭스란?

제네릭스(Generics) 자바 5부터 도입된 기능으로, 클래스나 인터페이스, 메서드 정의 타입을 매개변수화하여 사용할 있게 해줍니다. 제네릭스를 사용하면 코드의 재사용성, 타입 체크의 안전성 그리고 다양한 타입에 대해 동작하는 코드를 만들 있습니다.

 

  • 제네릭 클래스 및 인터페이스

제네릭 클래스와 인터페이스는 타입 매개변수를 사용하여 정의됩니다. 주로 대문자 알파벳 글자로 표현되며, 꺾쇠괄호(<>) 안에 위치합니다.

class ClassName<T> { ... }

interface InterfaceName<T> { ... }

 

예제: 여러 타입의 객체를 저장할 있는 제네릭 Box 클래스

class Box<T> {

    private T item;

 

    public void set(T item) {

        this.item = item;

    }

 

    public T get() {

        return item;

    }

}

 

  • 제한된 타입 매개변수 (bounded type parameters)

타입 매개변수에 대한 제한을 걸어 특정 클래스의 하위 타입만 허용하도록 있습니다. 예를 들어, 다음과 같이 상한을 설정할 있습니다.

class BoundedBox<T extends Number> {

    private T item;

 

    public void set(T item) {

        this.item = item;

    }

 

    public T get() {

        return item;

    }

}

 

위의 BoundedBox 클래스는 Number 클래스를 상속한 타입만 사용할 있습니다.

 

  • 제네릭 메서드

제네릭 메서드는 메서드의 반환 타입 앞에 타입 매개변수를 지정하여 정의할 있습니다.

public <T> void printArray(T[] array) {

    for (T element : array) {

        System.out.print(element + " ");

    }

}

 

2. 열거형(Enum) 개념과 활용법

  • 열거형이란?

열거형(Enum) 프로그램에서 사용되는 상수 집합을 표현하기 위한 특별한 형태의 클래스입니다. 이를 사용하면 코드의 가독성이 높아지고, 상수 값의 변경에도 유연하게 대응할 있습니다.

 

  • 열거형 정의 방법

 열거형의 기본 형태는 다음과 같습니다.

enum EnumName {

    CONSTANT1, CONSTANT2, ..., CONSTANTn;

}

 

  • 열거형 멤버 필드 및 메서드

열거형 클래스 내에 멤버 필드, 생성자, 메서드를 추가하여 열거형의 유용성을 높일 있습니다.

 

예제: 계절을 나타내는 열거형

enum Season {

    SPRING("Spring"),

    SUMMER("Summer"),

    AUTUMN("Autumn"),

    WINTER("Winter");

 

    private String name;

 

    Season(String name) {

        this.name = name;

    }

 

    public String getName() {

        return name;

    }

}

 

3. 제네릭스와 열거형 활용 예제

 

  • 제네릭스를 사용한 리스트 처리 예제

다양한 타입의 객체를 저장하는 리스트를 구현한 예입니다.

List<Box<String>> stringBoxes = new ArrayList<>();

List<Box<Integer>> integerBoxes = new ArrayList<>();

 

  • 열거형 예제: 월을 표현하는 열거형
enum Month {

    JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE,

    JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER

}

 

Month birthdayMonth = Month.DECEMBER;

 

4. 제네릭스와 열거형의 함께 사용

제네릭스와 열거형을 함께 사용하면 더욱 강력한 코드 작성이 가능합니다. 예를 들어, 아래 코드는 Map 인터페이스를 구현하여 특정 열거형을 키로 사용하고, 제네릭 타입의 값을 저장하는 EnumMap 클래스를 사용하는 예입니다.

enum Color { RED, GREEN, BLUE }

 

Map<Color, Box<String>> colorBoxMap = new EnumMap<>(Color.class);

 

 

 

이처럼 제네릭스와 열거형을 적절히 활용하면 타입 안전성과 코드의 가독성을 개선할 있습니다. 마지막으로 각각의 기능을 활용하여 자바 프로그램을 작성하기 때문에, 자세한 사례를 연구하고 프로젝트에 적용해보시기 바랍니다.

728x90
반응형