타입 언어에서 중복되거나 필요없는 코드를 줄여주는 것
타입 아정성을 해치지 않는 것
클래스 또는 메서드에 사용 할 수 있음
클래스 이름 뒤에 <> 문법 안에 들어가야 할 타입 변수를 지정
// 1. 제네릭은 클래스 또는 메서드에 사용 가능
// <> 안에 들어가야 할 타입 명시
public class Generic<T> { // 19번째 줄에 의해 <T> 안에 String 타입이 들어가 있음
// 2. 내부 필드의 String
private T t;
// 3. 메서드의 return 타입도 String
public T get() {
return this.t;
}
public void set(T t) {
this.t = t;
}
public static void main(String[] args) {
// 4. Generic을 통해서 구현한 클래스를 사용, 클래스에 선언했기 때문에 <T>가 String이 됨
Generic<String> stringGeneric = new Generic<>();
// 5. 객체 안에서의 T는 모두 다 String이기 때문에 정상 작동
stringGeneric.set("Hello World");
String tValueTurnOutWithString = stringGeneric.get();
System.out.println(tValueTurnOutWithString);
}
}