제네릭
포스트
취소

제네릭

제네릭이란?

  • 데이터의 타입을 일반화하는 것
  • 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법
  • 코드 중복을 줄이기 위해 사용
  • 정적인 분석의 이점을 챙기면서, 많은 타입들이 단일 인터페이스와 구현을 공유할 수 있게 한다.

사용 이유

  • 같은 유형의 코드를 작성하는 데 자료형이 다르다면 각 케이스마다의 코드를 작성해야 했다.
  • 제네릭을 사용하면 해당 경우를 방지할 수 있다.

만약 제네릭이 없다면?

  • n종류의 자료형에 대해 대응이 필요하다면 n개의 클래스를 작성해줘야 한다.
//s:클래스 작성
    class IntSample {
        late int _value;
        int get value => _value;
        set value(int value) => _value = value;
    }

    class DoubleSample {
        late double _value;
        double get value => _value;
        set value(double value) => _value = value;
    }

    class StringSample {
        late String _value;
        String get value => _value;
        set value(String value) => _value = value;
    }
//e:클래스 작성

//s:메인
    IntSample intSample = IntSample();
    intSample.value = 7;

    DoubleSample doubleSample = DoubleSample();
    doubleSample.value = 7.0;

    StringSample stringSample = StringSample();
    stringSample.value = "7";
//e:메인

제네릭을 사용한다면?

  • n종류의 자료형에 대해 대응이 필요해도 1개의 클래스만 작성하면 된다.
//s:클래스 작성
    class Sample<T> {
        late T _value;
        T get value => _value;
        set value(T value) => _value = value;
    }
//e:클래스 작성

//s:메인
  Sample<int> intSample = Sample();
  intSample.value = 7;

  Sample<double> doubleSample = Sample();
  doubleSample.value = 7.0;
  
  Sample<String> stringSample = Sample();
  stringSample.value = "7";
//e:메인

작성 방법

//기본 형식
class 클래스명<T> {
  
}

//사용 예시
class GenericSample<T> {
  
}

선언 방법

//기본 형식
class 클래스명<자료형> 변수명 = 클래스명();
class 클래스명<자료형> 변수명 = 클래스명<자료형>();

//사용 예시
GenericSample<int> gs_i = GenericSample();
GenericSample<double> gs_d = GenericSample<double>();
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.