JAVA 다시 공부 Generic 제네릭

Study with cocochichi·2023년 11월 14일
0
post-thumbnail

1) Generic (제네릭, 일반화)

  • 컬렉션 프레임워크(Java의 자료구조)의 하나
  • 클래스 정의 시 사용되어질 데이터타입을 미리 명시하지 않고 객체 사용 전 사용할 타입을 객체 생성시 명시하여 사용하는 기법
  • 주로, Collection API의 클래스들이 제너릭이 적용되어 있으므로 인스턴스 생성 시 제너릭 타입으로 사용할 데이터타입으로 지정
    ➡️ 지정된 데이터타입이 클래스 내의 임시 데이터타입을 대체하게 됨

2) ⭕ 제네릭을 사용한 클래스

  • 클래스 정의 시점에서 클래스명 뒤에 <> 기호를 사용하여 "가상의 자료형" 명시
    ➡️ 보통 1글자 영문 대문자 사용(주로 < E > 또는 < T > 사용)
  • 가상의 자료형은 클래스 정의 시점에서 정확한 자료형을 명시하지 않지만 클래스의 정의 시점에서 데이터타입 대신 사용 가능함
  • 해당 클래스의 인스턴스 생성 시점에서 가상의 자료형을 대신할 실제 자료형을 지정하면 클래스 내의 가상의 자료형이 실제 자료형으로 대체됨
    ➡️ 즉, 인스턴스 생성 시점에서 어떤 자료형으로도 변형 가능함!
  • 인스턴스 생성 후 참조 데이터타입으로 명시
    (int ➡️ Integer, char ➡️ Character) 이후 사용시 자동으로 타입 변경됨!
  • < T >에 데이터타입을 지정하지 않을 경우, Object 타입으로 대체되어 모든 데이터를 다룰 수 있다.
    ➡️ < Obeject > 명시하면 경고 밑줄이 사라짐

❌ 제네릭을 적용하지 않은 일반 클래스

1) 사용할 데이터타입을 특정 타입으로 관리하는 일반 클래스

2) 클래스 내에서 사용되어질 데이터에 대한 타입을 Object 타입으로 관리하는 경우 ➡️ 사용 시에는 타입판별필수!(예외 발생 가능성 때문)

0개의 댓글