정적 타입을 지향하는 프로그램 언어에서 제네릭이라고 하면 클래스나 함수(메소드) 등에서 미리 정해진 타입이 아닌 사용자가 원하는 타입을 넣어서 사용할 수 있는 방법이라 할 수 있다.
이미 많은 컨터이너들(List, Set, Map 등)이 이런 방식으로 구현되어 있다.
Java 에서 이를 어떻게 사용하는 지 간단히 알아보자.
// Foo.java
package com.demo;
class Foo<T> {
private T myData;
public T getMyData() {
return myData;
}
public void setMyData(T data) {
myData = data;
}
}
Foo<T>
에서 <T>
부분이 제네릭을 정의하는 부분이다. 사용자가 이 제네릭을 사용할 때 <T>
부분을 원하는 타입으로 넣어서 사용하면 된다.
아래 처럼 사용하면 된다.
// main.java
package com.demo;
public class Main {
public static void main(String[] args) {
Foo<Integer> foo = new Foo<Integer>();
foo.setMyData(100);
System.out.println(foo.getMyData());
}
}