server
[Java] Java의 Generic 타입
셉인
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;
}
제네릭의 장점
- 타입 안정성: 제네릭을 사용하면 컴파일 시점에 타입 체크를 수행하기 때문에, 런타임에 발생할 수 있는 ClassCastException 같은 예외를 사전에 방지할 수 있다.
- 재사용성: 다양한 타입의 객체를 다루는 코드를 한 번만 작성하여 여러 타입에 재사용할 수 있습니다. 이로 인해 코드의 재사용성과 유지 보수성이 향상된다.
- 코드의 명확성: 제네릭을 사용함으로써 코드가 더 명확해지고, 의도하는 타입 사용을 명시적으로 표현할 수 있다.
타입 파라미터 규칙
일반적으로 타입 파라미터로는 대문자 알파벳 한 글자를 사용한다.
<가장 많이 사용되는 타입 파라미터>
- T는 Type
- E는 Element
- K는 Key
- V는 Value
- N은 Number
728x90