Generic

이규현·2024년 8월 13일

Generic(제너릭)을 왜 사용할까?


  • Integer 타입을 담는 클래스, String 타입을 담는 클래스가 있다고 가정하면 이후에 Double, Boolean 등 여러 타입을 담는 클래스를 만들고 싶을 때 수십개의 클래스를 만들어야한다.
  • 이 문제를 해결하고자 Generic을 도입한다.

Generic 적용

public class GenericBox<T> { 

	//제네릭 클래스에서는 타입을 미리 결정하지 않는다. 
      T는 타입 매개변수라고 함.

    private T value;

    public void set(T value){
        this.value = value;
    }

    public T get(){
        return value;
    }
}
  • <>를 사용한 클래스를 제네릭 클래스라고 한다.
  • 미리 타입을 결정하지 않고 < T >와 같이 선언하고 이 T를 타입 매개변수라고 한다.
  • 이 T는 이후에 Integer, String 등으로 변할 수 있다.

Generic을 활용한 메소드

void method(){
	System.out.print("hello");
}
  • 위와 같이 메소드를 정의하면 이 메소드는 오직 hello라는 문자열만 출력할 수 있다. 결국 재사용성이 떨어진다
void method(String val = "hello"){
	System.out.print(val);
}
  • 위와 같이 메소드를 선언하면 재사용성이 높아진다.

Generic 활용

제네릭 타입

//정의

GenericClass<T>

//객체를 생성하는 시점에 타입인자 전달

new GenericClass<String>

제네릭 메소드

//정의

<T> T genericMethod(T t)

//메서드를 호출하는 시점에 타입 인자 전달

GenericMethod.<Integer>genericMethod(i)

메소드는 호출 직전에 타입을 결정하기 때문에 위의 genericMethod() 는 타입이 Integer인 메소드이다.

0개의 댓글