제네릭(Generic)1

5BRack·2022년 7월 4일

자바란?

목록 보기
26/42

제네릭(Generic)

  • 자바에서는 다양한 종류의 클래스와 인터페이스를 제공한다 이런 클래스와 인터페이스를 내부 멤버에서 활용하는 클래스를 작성하고자 할 때는 제공되는 클래스나 인터페이스의 다양성 만큼이나 많은 가짓수의 클래스를 생성해야 한다.
  • 동일한 이름의 메서드나 다양한 타입의 입력 매개변수를 가질수 있도록 하려면 고려하는 입력매개변수 타입의 수만큼 오버로딩을 수행해야 한다. 이러한 비효율성을 한번에 해결하는데 필요한 문법 요소가 제네릭이다.
  • Object 타입으로 클래스 선언시 하위 클래스 관리에 용이하다.

Object 타입으로 하위 클래스관리 예시

class Apple{}
class Pencil{}

class Goods{
      private Object object = new Object();
      public Object get(){
      return object;
  }
      public void set(Object object){
      this.object = object;
      }
  }
]

약한 타입 체크 는 잘못된 타입 캐스팅에도 문법오류를 발생시키지 않는 것을 말한다.


제네릭 문법

  • 제네릭을 사용하면 모든 타입의 클래스를 저장할 수 있으면서도 잘못된 캐스팅을 할때 문법 오류를 발생시켜 잘못된 캐스팅으로 발생할수 있는 문제를 사전에 예방할 수 있다. 이를 강한 타입 체크 라고 한다.

제네릭 클래스와 제네릭 인터페이스 정의하기

//제네릭 타입 변수명이 1개일 때
접근 지정자 class 클래스명<T>{}

//제네릭 타입 변수명이 2개일 때
접근 지정자 class 클래스명<K,V>{}

//제네릭 타입 변수명이 1개일 때
접근 지정자 interface 클래스명<T>{}

//제네릭 타입 변수명이 2개일 때
접근 지정자 interface 클래스명<K,V>{}

<관례적으로 사용하는 제네릭 타입 변수명>

제네릭 타입 변수의미
T타입(Type)
K키(Key)
V값(Value)
N숫자(Number)
E원소(Element)

<제네릭 클래스의 객체 생성>

클래스명<실제 제네릭 타입> 참조 변수명 = new 클래스명<실제 제네릭 타입>();

클래스명<실제 제네릭 타입> 참조 변수명 = new 클래스명();

장점

  • 하나의 클래스로 다양한 타입의 객체를 저장하고 관리할 수 있다.
  • get 으로 메서드 호출시, 타입 형식을 체크할 수 있다.
  • 객체를 불러올때 다운캐스팅을 하지 않아도 된다.

0개의 댓글