728x90
제네릭이란 다양한 타입의 객체들을 다루는 메서드나 클래스에 컴파일 시의 타입 체크를 해주는
기능을 의미한다. 예를 들어 문자열만을 받을 수 있는 배열에 정수나, 실수와 같은 의도하지 않은
타입이 들어오는 것을 막아주는 것을 말한다. 제네릭이 없을 때에는 원하지 않는 타입이 들어와
의도하지 않은 결과가 나올 수 있기 때문에 제네릭을 통하여 이러한 경우를 방지해준다.
이렇게 타입 체크를 해주게 되면 객체의 타입 안정성을 높이고 형 변환의 번거로움이
줄어들게 된다. 제네릭은 클래스명 뒤에 <>를 붙여 작성될 수 있으며,
그 안에 원하는 타입을 지정하여 사용하게 되는데 이를 사용할 때에는 참조 변수와
생성자에 대입된 타입이 일치해야 한다.
ex)
포켓몬<피카츄> 노멀상자 = new 포켓몬<피카츄>(); // 가능
포켓몬<구구> 비행상자 = new 포켓몬<구구>(); // 가능
포켓몬<피카츄> 전기상자 = new 포켓몬<라이츄>(); // 불가능
라이츄가 피카츄를 상속받아도 불가능
단, 제네릭 클래스가 상속 관계일 때에는 사용이 가능하다.
ex)
포켓몬<피카츄> 노멀상자 = new 전기포켓몬<피카츄>(); // 가능
포켓몬<피카츄> 전기상자 = new 전기포켓몬<라이츄>(); // 불가능
단, 여전히 대입되는 타입은 같아야 함
클래스를 생성하여 제네릭에 타입을 인자로 받아 사용 중에 제네릭 안에 들어오는 타입에
포켓몬만 들어오도록 제한을 두고 싶다면 <타입 extends 포켓몬>을 통해 포켓몬을 상속하는
타입만 들어오도록 제한할 수 있다.
메서드에서도 사용할 수 있으며 public <타입> 리턴 타입 메서드명(매개변수 <타입> 타입명){ }과
같은 형태로 사용된다. 클래스와 같이 타입의 범위를 제한하고 싶다면 메서드명 뒤쪽이 아닌
앞쪽의 타입에 제한을 주어야 한다.
출처)
https://www.youtube.com/watch?v=n28M8iryFPw
728x90
'Study' 카테고리의 다른 글
| 정규 표현식 (0) | 2022.07.24 |
|---|---|
| OOP(객체지향 프로그래밍) (2) (0) | 2022.07.11 |
| 애자일 소프트웨어 개발(Agile Software Development) (0) | 2022.07.09 |
| 시스템 설계와 프로그램 구현 (0) | 2022.07.08 |
| MVC 패턴(2) (0) | 2022.07.07 |