상세 컨텐츠

본문 제목

[Java] Java의 Generic 타입

server

by 셉인 2024. 4. 3. 21:43

본문

728x90

Java의 Generic 타입

Java의 제네릭(Generic)은 클래스, 인터페이스, 메소드를 정의할 때 타입(Type)을 파라미터로 사용할 수 있게 하는 기능

이를 통해 다양한 타입의 객체를 다루는 코드를 재사용할 수 있게 되며, 컴파일 시간에 타입 체크를 수행하여 타입 안정성을 높이고, 타입 캐스팅의 번거로움을 줄일 수 있다. (런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술이다.)

 

제네릭을 사용하면 컬렉션, 클래스, 메소드 등에서 명시적으로 타입을 지정해주지 않고도, 타입을 파라미터처럼 넘겨 사용할 수 있게 된다. 이는 코드 작성 시 타입 안정성을 보장하고, 불필요한 타입 변환을 준다.

 

즉, 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법

특정 타입을 미리 지정해주는 것이 아닌, 필요에 의해 지정할 수 있도록 하는 타입

 

제네릭의 기본 문법

클래스나 인터페이스에서 제네릭 사용하기

클래스나 인터페이스 이름 뒤에 < > 기호를 추가하고, 그 안에 타입 파라미터를 지정한다.

public class Box<T> {
    private T t;
    
    public void set(T t) { this.t = t; }
    public T get() { return t; }
}

여기서 T는 타입 파라미터로, 실제 클래스 인스턴스를 생성할 때 구체적인 타입으로 대체된다.

 

메소드에서 제네릭 사용하기

메소드 반환 타입이나 매개변수에도 제네릭을 사용할 수 있다. 메소드에만 제네릭을 사용할 경우, 메소드 반환 타입 바로 앞에 타입 파라미터를 선언한다.

public <T> T genericMethod(T t) {
    return t;
}

 

제네릭의 장점

  1. 타입 안정성: 제네릭을 사용하면 컴파일 시점에 타입 체크를 수행하기 때문에, 런타임에 발생할 수 있는 ClassCastException 같은 예외를 사전에 방지할 수 있다.
  2. 재사용성: 다양한 타입의 객체를 다루는 코드를 한 번만 작성하여 여러 타입에 재사용할 수 있습니다. 이로 인해 코드의 재사용성과 유지 보수성이 향상된다.
  3. 코드의 명확성: 제네릭을 사용함으로써 코드가 더 명확해지고, 의도하는 타입 사용을 명시적으로 표현할 수 있다.

타입 파라미터 규칙

일반적으로 타입 파라미터로는 대문자 알파벳 한 글자를 사용한다.

<가장 많이 사용되는 타입 파라미터>

  • T는 Type
  • E는 Element
  • K는 Key
  • V는 Value
  • N은 Number
728x90

관련글 더보기

댓글 영역