JAVA - 제너릭

이상해씨·2022년 7월 30일
0

웹 풀스택(JAVA)

목록 보기
9/54

✔제너릭

  • 제너릭(Generics) : 다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입 체크
    • 미리 사용할 타입을 명시해서 형 변환을 하지 않아도 되게한다.
    • 객체의 타입에 대한 안전성 향상 및 형 변환의 번거로움 감소.
  • 표현
    • 클래스 또는 인터페이스 선언 시 <>에 타입 파라미터 표시
      • Class_Name : Raw Type
      • Class_Name : Generic Type
    • 타입 파라미터 : 특별한 의미의 알파벳 보다는 단순히 임의의 참조형 타입을 말함.
      • T : reference Type, E : Element, K : Key, V : Value
    • 객체 생성 : 변수 쪽과 생성 쪽의 타입은 반드시 같아야 한다.
      • ClassName generic = new ClassName();
      • 생성은 생략하여도 변수 쪽과 묵시적으로 맞추어 준다.
// 기존 Class
// 사용할 때 직접 타입을 체크하며 사용해야 한다.
public class NormalBox{
	private Object some;

	public Object getSome(){
		return some;
	}

	public void setSome(Object some){
		this.some = some;
	}
}

// Generic 클래스
// 사용할 데이터 타입을 객체 생성 시 결정하므로 쉽게 사용가능하다.
public class GenericBox<T> {
	private T some;
	
	public GenericBox() {}
	
	public GenericBox(T some) {
		this.some = some;
	}

	public T getSome() {
		return some;
	}

	public void setSome(T some) {
		this.some = some;
	}
}
  • type parameter의 제한 : 필요에 따라 구체적인 타입 제한 필요
    • (ex) 계산기 프로그램 : Number 이하의 타입 (Byte, Short, Integer, ...)로만 제한
      • type parameter 선언 뒤 extends 와 함께 상위 타입 명시
    • 인터페이스로 제한할 경우도 extends 사용.
    • 클래스와 함께 인터페이스 제약 조건을 이용할 경우 &로 연결.
  • 와일드 카드(?) : Generic Type에서 구체적인 타입 대신 사용
    • Generic type<?> : 타입에 제한이 없음(Object).
    • Generic type<? extends T> : T 또는 T를 상속받은 타입들만 사용 가능.
    • Generic type<? super T> : T 또는 T의 조상 타입만 사용 가능.
  • Generic Method : 파라미터와 리턴 타입으로 type parameter를 갖는 메서드
    • 메서드 리턴 타입 앞에 타입 파라미터 변수 선언.
    • 제한자 <타입 파라미터> 리턴_타입 메서드명(파라미터).
    • 메서드 호출 시점에 타입 파라미터의 타입 결정.
profile
후라이드 치킨

0개의 댓글