어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 한다.
클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법
import java.util.ArrayList;
// 실행 시 에러
public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add("30"); //String
Integer i = (Integer) list.get(2); //컴파일 시에는 에러 없음
//---를 Object로 인식했기 때문에 Integer로 형변환하는 것은 문제없음
// but 인덱스 2의 요소는 String이기 때문에
System.out.println(list); // 실행시 형변화 에러 발생
}
}
// java.lang.String cannot be cast to java.lang.Integer
// 컴파일에서 에러를 잡아 바꿔줌
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(Integer.valueOf("30")); //-> list.add(30)
// Integer i = (Integer) list.get(2);
Integer i = list.get(2); //형변환 생략 가능
System.out.println(list);
}
}
// [10, 20, 30]
public class 클래스명<T> { // <T> : 타입인자. 자료형 매개변수
...
}
public interface 인터페이스명<T>{
...
}
박은종, 『Do it! 자바 프로그래밍 입문』, 이지퍼블리싱(주), 2018
스파르타코딩클럽 <Java 실무 기초 KDT 실무형 스프링 백엔드 엔지니어 양성과정 1회차>
[자바의 정석 - 기초편] ch12-1 지네릭스란?