제네릭(Generic)?
자바 제네릭은 generic 타입 및 메소드를 정의하고 사용 할 수 있는 언어적 특성이다.
List<Integer> list = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
위와같이 꺽쇠(< >)안에 클래스 타입이 명시된 패턴을 자주 발견할 수 있다. 이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠안에 포함하여 전달한다.
- 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룬다.
- 타입에 대해 유연성과 안정성을 확보한다.
- 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술
예시
public class Box<T> {
private T value;
public Box(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
위의 Box 클래스는 제네릭 타입 T를 사용한다. T는 어떤 타입이든 될 수 있으며, T 타입의 value를 저장할 수 있다. 이때 value는 null일 수도 있있다.
Box<String> stringBox = new Box<>(null); // null 값을 가질 수 있음
Box<Integer> intBox = new Box<>(123); // 정수 값을 가질 수 있음
위와 같이 null 이어도 되고, 정수값이어도 되고 마음대로 지정할 수 있다.
Java의 모든 참조 타입은 null을 허용하기 때문에 제네릭 타입 T는 null 값을 가질 수 있다는게 특징이다.
'JAVA' 카테고리의 다른 글
[Java] 문자열을 반복하는 메서드 - repeat() (0) | 2024.10.24 |
---|---|
CompletableFuture 에서 명시적인 값을 지정하기 (0) | 2024.07.17 |
MVC 모델 (0) | 2023.10.27 |
StringBuilder 사용법과 메서드 정리 (0) | 2023.09.09 |
자바 자료형 정리(Java Data Type) (0) | 2023.09.06 |