클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다.
public class void example() {
List<Integer> numbers = new ArrayList<>();
}
public static void main(String[] args) {
// 제네릭을 사용하지 않는 경우
List numbers = Array.asList("1", "2", "3");
int num = numbers.get(0); // 런타임 시에 오류가 발생해 미리 발견할 수 없다.
// 제네릭을 사용하는 경우
List<Integer> numbers = Array.asList("1", "2", "3"); // 컴파일 에러가 발생하여 미리 오류를 발견할 수 있다.
int num = numbers.get(0);
}
public static void main(String[] args) {
// 제네릭을 사용하지 않는 경우
List numbers = Array.asList(1, 2, 3);
int num = (int) numbers.get(0); // numbers list의 요소들이 Object 타입으로 들어가므로 int로 형변환을 해야 한다.
// 제네릭을 사용하는 경우
List<Integer> numbers = Array.asList(1, 2, 3);
int num = numbers.get(0); // numbers list의 요소들이 integer만 들어갈 수 있다는 것을 보증하므로 형변환의 필요가 없다.
}