Generic

김민혁·2022년 1월 24일
0

정의

  • 다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입 체크
    • 미리 사용할 타입을 명시해서 형변환을 하지 않아도 되게 함
      • 객체의 타입에 대한 안정성 향상 및 형변환의 번거로움 감소
  • 바구니에 라벨링한다는 개념(꺼낼 때 뭐가 들었는지 알 수 있도록)

표현

  • 클래스 또는 인터페이스 선언 시 <>에 타입 파라미터 표시
public class Class_Name<T>{}
public interface Interface_Name<T>{}
  • Class_Name: Raw Type
  • Class_Name: Generic Type
  • 타입 파라미터
    • 특별한 의미의 알파벳보다는 단순히 임의의 참조형 타입을 말함
    • T: reference Type, E: Element, K: Key, V:value
  • 객체 생성
    • 변수 쪽과 생성 쪽의 타입은 반드시 같아야 함
  • type parameter의 제한
    • 필요에 따라 구체적인 타입 제한 필요
      • 계산기 프로그램 구현시 Number 이하의 타입(Byte, Short, Integer ...)로만 제한
      • type parameter 선언 뒤 extends와 함께 상위 타입 명시
    class NumberBox <T extends Number>{
    ///....
    }
  • 인터페이스로 제한할 경우도 extends 사용
  • 클래스와 함께 인터페이스 제약 조건을 이용할 경우 &로 연결

Generic Type 객체를 할당 받을 때 와일드 카드(?) 이용

- generic type에서 구체적인 타입 대신 사용

-종류
- <?>
- <? extends T>
- <? super T>

Generic Method

  • 파라미터와 리턴타이븡로 type parameter를 갖는 메서드
    • 메서드 리턴 타입 앞에 타입 파라미터 변수 선언
profile
학생

0개의 댓글