-
구체적인 정의는 아래와 같습니다.
제네릭: 클래스 내부에서 사용할 데이터 타입을 외부에서 설정 한 기법으로 메서드나 컬렉션 클래스 컴파일 시 타입체크의 기능을 해주는 역할을 한다.
사용할 타입에는 참조타입만 들어가며 기본타입의 경우 래퍼클래스를 통해서만 사용할 수 있다.
주로 이걸 사용하는 부분을 생각해보시면 ArrayList , List 가 있습니다.
ArrayList<String> temp = new ArrayList<>();
이렇게 되면 temp에는 String을 제외한 어떤것도 넣을 수 없습니다.
temp.add("스트링"); temp.add(1); //컴파일에러
제네릭은 한정적 타입 매개변수를 통해서 범위를 제한할 수 있습니다.
방식에는 두가지 extends 와 super가 있습니다.
1. 해당 참조 타입을 특정 타입만 타입으로 가지기 위해서는 super를 사용합니다.
public void onlyNumber(List<? super Integer> list)
2. 해당 참조 타입이 특정 타입을 포함해서 가지고 싶다면 extends를 사용합니다.
public void includeNumber(List<? extends Integer> list)
여기서 ? 라는 이상한게 나왔습니다.
물음표가 가지는 의미와 같이 알려지지 않은 타입을 나타내며 null 외에는 어떤 원소도 넣을 수 없습니다.
'개발 > java' 카테고리의 다른 글
Builder 패턴 활용기 (1) 2021.12.25 Stream.of vs Arrays.stream (0) 2021.12.23 Iterate는 멀까 (0) 2021.12.18 enum 활용법 (0) 2021.12.15 메모리와 스택과 힙 (0) 2021.12.14