본문 바로가기
IT/java

자바 제네릭: 타입 안정성을 위한 강력한 도구

by 뉴코딩맨 2023. 6. 9.
자바 제네릭은 자바 5부터 도입된 기능으로, 타입 안정성을 제공하여 컴파일 시점에서 타입 오류를 잡아내고 프로그램의 안정성을 높여줍니다. 제네릭은 클래스나 메서드를 작성할 때 일반적인 타입 대신 실제 타입을 파라미터로 받아 사용하는 방식을 말합니다. 이를 통해 재사용성과 유연성을 높일 수 있습니다.

 

 

제네릭 클래스

제네릭 클래스는 클래스 선언 시 타입 파라미터를 사용하여 일반적인 타입을 추상화합니다. 예를 들어, ArrayList 클래스는 제네릭을 사용하여 여러 종류의 객체를 저장할 수 있습니다. 다음은 제네릭 클래스의 예입니다.
 
public class Box<T> {
    private T value;

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

    public T getValue() {
    	return value;
    }
}
 
위의 예시에서 Box<T>에서 T는 타입 파라미터로, 어떤 타입의 값을 저장할지 사용자가 지정할 수 있습니다.

 

 

제네릭 메서드

제네릭 메서드는 메서드 선언 시 타입 파라미터를 사용하여 메서드의 인자 타입이나 반환 타입을 추상화할 수 있습니다. 예를 들어, 다음은 제네릭 메서드의 예입니다.
 
public <T> void printArray(T[] array) {
    for (T item : array) {
    	System.out.println(item);
    }
}
 
위의 예시에서 printArray 메서드는 T 타입의 배열을 받아 배열의 요소를 출력합니다. 이렇게 함으로써 다양한 타입의 배열을 인자로 전달할 수 있습니다.

 

 

와일드카드

와일드카드(?)는 제네릭 타입을 더욱 유연하게 다룰 수 있게 해줍니다. 와일드카드를 사용하면 알 수 없는 타입을 표현할 수 있거나, 특정 타입의 하위 타입으로 제한할 수 있습니다. 예를 들어, 다음은 와일드카드의 사용 예시입니다:
 
public void processList(List<?> list) {
    for (Object item : list) {
    	// 처리 로직
    }
}
 
위의 예시에서 processList 메서드는 어떤 타입의 리스트도 인자로 받을 수 있습니다.

 

 

제네릭의 장점

  • 타입 안정성: 컴파일 시점에서 타입 오류를 검출하여 런타임 오류를 방지합니다.
  • 재사용성과 유연성: 제네릭을 사용하면 다양한 타입에 대해 일반적인 코드를 작성할 수 있습니다.
  • 코드 가독성: 제네릭을 사용하면 코드가 간결해지고 읽기 쉬워집니다.
제네릭은 자바에서 강력한 타입 시스템을 구축하는 데 중요한 도구입니다. 타입 안정성을 높이고 유연한 코드를 작성하기 위해 제네릭을 적극적으로 활용해보세요.
 

댓글