이를 통해 다양한 타입의 객체를 다루는 코드를 재사용할 수 있게 되며, 컴파일 시간에 타입 체크를 수행하여 타입 안정성을 높이고, 타입 캐스팅의 번거로움을 줄일 수 있다. (런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술이다.)
제네릭을 사용하면 컬렉션, 클래스, 메소드 등에서 명시적으로 타입을 지정해주지 않고도, 타입을 파라미터처럼 넘겨 사용할 수 있게 된다. 이는 코드 작성 시 타입 안정성을 보장하고, 불필요한 타입 변환을 준다.
즉, 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법
특정 타입을 미리 지정해주는 것이 아닌, 필요에 의해 지정할 수 있도록 하는 타입
클래스나 인터페이스 이름 뒤에 < > 기호를 추가하고, 그 안에 타입 파라미터를 지정한다.
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;
}
일반적으로 타입 파라미터로는 대문자 알파벳 한 글자를 사용한다.
<가장 많이 사용되는 타입 파라미터>
[Spring/Java] 스프링의 의존성 주입 방식 (DI) (0) | 2024.04.04 |
---|---|
[객체 지향 프로그래밍] 소프트웨어 설계를 위한 다섯 가지 기본 원칙 : SOLID 원칙 (0) | 2024.04.04 |
[Java] super, super() 키워드 차이 (1) | 2024.04.04 |
[Java] final, static, static final (0) | 2024.04.04 |
[Java] this와 this()의 역할과 차이 (0) | 2024.04.02 |
댓글 영역