[Java] 제네릭(Generic) 사용법 & 예제 총정리
데이터타입을 미리 정의하지 않고, 클래스를 인스턴스화(new 생성) 하는 시점에 타입을 정하는 방식
참조형(객체형)만 타입으로 설정 가능
의도하지 않은 타입의 객체가 저장되지 않도록 컴파일 단계에서 확인 가능
⇒ 에러는 아니지만, 해당 코드에서 의도한 결과가 아니기 때문에 발견하기가 어려움
클래스의 재사용성이 좋음 (하나의 클래스를 타입별로 사용할 수 있기 때문)
특정 타입만 다루지 않고 여러 종류의 타입으로 바꿀 수 있도록, 클래스나 메소드를 일반화시키는 방법 ⇒ 타입변환(Casting)이 불필요
★★ 컬렉션의 요소는 객체만 가능 ⇒ 기본자료형으로 구체화 불가능(Wrapper 사용)
참조형만 >>>>>> 제네릭 >>>>>> 컬렉션프레임워크 클래스, 인터페이스에 사용
Object 타입은 모든 클래스의 최상위 클래스이기 때문에 모든 타입의 객체가 올 수 있음 (다형성)
class GenericsClass<T> { // T : 지정되지 않은 임의의 데이터타입
T num;
T method(T num) {
System.out.println(num1);
}
}
new GenericsClass<String>(); // 인스턴스화(new 선언)할 때 타입(String) 지정
new GenericsClass<Integer>(); // 인스턴스화(new 선언)할 때 타입(Integer) 지정