[JAVA] 제네릭(Generic)이란?

[JAVA] 제네릭(Generic)이란?

Generic

  • 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것
  • 제네릭 선언 하는 법
    • 클래스<사용할 타입>으로 함
  • CustomerStack 클래스는 <T>로 제네릭이 설정되어 있다.
  • CustomerStack 내부에 있는 List타입의 customStack 객체도 <T>로 제네릭 설정이 되어 있음
  • GenericEx_1 클래스에는 두 개의 객체 stringStack과 integerStack이 있음
  • 두 객체의 타입은 CustomStack임
  • CustomsStack 클래스를 사용하려면 제네릭이 설정되어 있으므로, 사용하는 쪽에서도 제네릭 타입을 명시해줘야함
    • ex) <String>, <Integer> 등
  • 마치, 회원가입 기능에서 '이름 입력'란에는 반드시 한글이나 영문만 들어가야 하는데, 사용자가 숫자를 넣게 되면 에러가 발생하는 것과 같음

<E>, <T>의 차이

  • E, T로 선언되어 있는 제너릭 클래스에 어떤 타입 클래스가 들어가도 성공한다.
  • E(element)는 요소라고 해석 할 수 있다.
    • ex) ArrayList는 요소들(object)를 배열처럼 저장하기 때문에 E로 선언되어야 함
    • 즉, List는 E(Element)가 어울린다.
  • 결론은, 컬렉션 클래스(Collection, List, Set)와 같이 배열 기반으로 되어 있는 구조에는 E가 어울리고 그 외에는 T가 어울림

  • 제네릭은 참조형 데이터 타입만 설정 가능
    • 즉, int, char 이런것들은 설정 불가
    • Integer는 래퍼 클래스(wrapper class)임
  • 래퍼 클래스는 기본형 데이터 타입(primitive type)을 참조형 데이터 타입으로 바꿔주는 클래스

출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?