변수의 타입이 잘 변하지 않는 것을 정적타입이라고 하며 자바가 해당된다.
매개변수의 변수타입만 다른 메서드가 3개가 있다.
public int test(int a, int b){}
public int test(int a, long b){}
public int test(int a, String b){}
이걸 하나로 줄이기 위해서 예전에는 Object를 사용하였는데 Object를 사용하게되면 타입이 지정되지 않아 값이 이상하게 나오고 런타임 오류가 나오는 경우가 잦아 제네릭을 사용하게 되었다.
** Object는 모든 변수 타입의 상위요소로 모든 변수타입은 Object를 상속받고 있다.
=> 모든 변수타입을 대체 가능
변수타입 대신 < T>을 사용하고 나중에 변수타입을 지정하면 그 변수타입을 따라감
컴파일 시점에 파일을 체크하기 때문에 Object와 같은 이슈는 없음
예시
public class Generic<T> {
private T t;
public static void main(String[] args) {
Generic<String> stringGeneric = new Generic<>();
=> 이 시점에 T가 String이 됨
}
}