자바에서 널리 사용되지만, 자주 다루어지지 않는 주제가 무엇이 있을까요? 제네릭(Generic) 입니다! 많이 사용하지만, 대부분 개발자들은 제네릭을 잘 알지는 못합니다.
📌 제네릭의 장점은 무엇이 있을까요?
- 코드 재사용성: 다양한 타입에 대해 공통 코드를 사용 가능
- 컴파일-타임 체크: 컴파일 시에 제네릭 코드 확인
- 타입 안정성: 불필요한 데이터 추가를 제한
- 컬렉션에서 사용: 컬렉션에 객체 타입 필요
📌 제네릭 네이밍 컨벤션
- E: Element(컬렉션에서 사용)
- K: Key(맵에서 사용)
- N: Number
- T: Type
- V: Value(맵에서 사용)
- S, U, V etc.: 2nd, 3rd, 4th 타입
📌 제네릭 타입 제한
extends를 사용하여 원하는 클래스의 객체만 허용하도록 사용할 수 있습니다.
ex. AnimalPrinter<T extends Animal>
📌 와일드카드
'?' 마크를 사용하여 모든 타입을 허용할 수 있습니다.
ex. List<?> list