Generic 이란?
- 일반화 시킨다? 라는 언어로 유연하게 코드를 짜게 도와준다
Generic의 이점
- 중복되거나 필요없는 코드를 줄여준다.
- 타입 안정성을 해치지 않는다.
Generic 사용법
- 제네릭은 클래스 또는 메서드에 사용
- <> 안에 들어가야할 타입을 명시
- T라는 변수를 타입으로 두고 진행
// 제네릭 클래스
// <T> <- 타입 변수
// 제네릭 클래스는 원시 타입
public class Generic<T> {
private T t;
// 메서드의 return type을 제네릭으로 지정 가능
public T get() {
return this.t;
}
// 메서드의 매개변수의 타입도 제네릭으로 지정가능
public void set(T t) {
this.t = t;
}
}
Generic 주의점
- 객체의 static 멤버에는 사용 불가 (제네릭은 인스턴스 변수로 간주되어 모든 객체에 동일하게 동작하는 static 필드 특성상 사용 불가)
- 제네럭 배열은 생성 불가
- 상속과 타입의 관계는 그대로 적용
와일드 카드
<? extends T> : T와 그 자손들만 사용 가능
<? super T> : T와 그 부모들만 사용 가능
<?> : 제한 없음
- 메서드 스코프로 해당 메서드에서만 동작하는 제네릭을 선언할 수 있다
- 제네릭 메서드의 제네릭 타입 변수에는 static 메서드 사용 가능