오봉이와 함께하는 개발 블로그

Generic 문법 본문

자바/교육과정

Generic 문법

오봉봉이 2021. 11. 29. 17:53
728x90

제네릭(Generic)

  • 클래스(인터페이스)나 메서드를 타입 파라미터를 이용하여 선언하는 기법
public class 클래스명<T> {......}
public interface 인터페이스명<T> {.........}
class Gen<T> {
    private T value;
}
  • 클래스 설계 시 타입 는 아직 결정되지 않았음
  • 모든 종류의 타입을 다룰 수 있음
  • 선언 시 클래스 또는 인터페이스 이름 뒤에 <> 붙임
  • <> 사이에 타입 파라미터 위치 ->
  • 타입 파라미터
    • 일반적으로 대문자 알파벳 한 문자로 표현
    • E : Element
    • T : Type
    • V : Value
    • K : Key
  • 개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야 함
Gen<String> gen = new Gen<String>();
Gen<Integer> gen = new Gen<String>();
  • 클래스 내부에서 사용할 데이터 타입을 클래스 외부에서 지정

  • <> 에는 기본 데이터 타입은 올 수 없다.

    • 불가능
    • 가능
      • Wrapper 클래스 사용
      • 기본 데이터 타입에 대응되는 클래스
      • 기본 데이터 타입을 객체로 포장
  • 제네릭을 사용하는 코드의 이점

    • 컴파일 시 강한 타입 체크 가능
      • 실행 시 타입 에러가 나는 것 방지
      • 컴파일시 미라 타입을 강하게 체크해서 에러를 사전에 방지
    • 강제 형 변환 과정을 제거 가능(프로그램 성능 향상)
  • 제네릭을 하지 않을 경우


List list = new ArrayList();
list.add(“abc”);
String str = (String) list.get(0); 
// Object 타입 반환 -> String 타입으로 형 변환
// 강제 타입 변환 발생
  • 제네릭을 사용할 경우
List<String> list = new ArrayList<String>();
list.add(“abc”);
String str = list.get(0); 
// 강제 타입 변환 발생하지 않음
// 제네릭 : 컴파일 시 타입 결정
  • 오버라이드 메소드 : 실행 시 결정 (동적 다형성 이용)

  • 제네릭은 클래스나 인터페이스를 설계할 때 구체적인 타입을 명시하지 않고 타입 파라미터로 대체 했다가 실제 클래스가 사용될 때 구체적인 타입을 지정하여 타입 변환을 최소화시킴으로서 프로그램 성능을 향상 시킬 수 있고 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지 하기 위한 방법

728x90

'자바 > 교육과정' 카테고리의 다른 글

Collection 클래스(sort, reverse, max, min, binarySearch)  (0) 2021.11.30
this의 개념  (0) 2021.11.30
DAY_13  (0) 2021.11.17
DAY_12  (0) 2021.11.16
DAY_11  (0) 2021.11.16
Comments