티스토리 뷰
728x90
반응형
* 제네릭(Generic) 타입
Java에서 제네릭 타입을 사용할 경우 컴파일 과정에서 타입체크를 할 수 있습니다.
클래스와 메소드를 선언할때 파라미터로 선언할 수 있습니다.
* 왜 제네릭 타입을 쓸까?
1. 컴파일 단계에서 에러를 잡을 수 있다.
- 잘못된 객체를 넣을시 컴파일 단계에서 걸러주어 런타입 단계에서 문제가 발생 될 여지를 막아주기 때문에 꼭 써주는 것이 좋다.
2. 타입 캐스팅을 컴파일러가 해준다.
- 예를 들어 숫자만 들어가야하는 Map이 있다고 생각해 봅시다.
Map map = new HashMap<>();
map.put("사과", 1);
map.put("단감", 2);
int rank = (Integer)map.get("사과");
- 제네릭 타입을 선언하지 않을 경우 캐스팅을 해줘야 하지만
Map<String, Integer> map = new HashMap<>();
map.put("사과", 1);
map.put("단감", 2);
int rank = map.get("사과");
- 제네릭 타입을 선언할 경우 컴파일러가 타입 캐스팅을 해주기 때문에 개발자가 할 필요가 없다.
3. 재사용성이 좋아진다.
- 오버로딩을 할 필요없이 코드라인수를 줄일 수 있고 재사용성을 높힐 수 있다.
- 예를들어 어떤 타입이 와도 더하는 기능의 함수가 있다고 가정하면
public <T extends Number> int add (T param ) { ... }
- param을 Number타입마다 오버로딩하여 할 필요없이 해당 코드 처럼 구현하면 재사용성이 올라간다.
* 제한된 타입 파라미터
사용하다가 매개변수 타입이 Number타입만 가져야 할 수도 있고, Map만 받아야 할 수도 있다.
public <T extends Number> int add (T param ) { ... }
public <T extends Map<String,Object>> void replaceRank (T param ) { ... }
해당 코드처럼 원하는 타입만 인수로 받아 처리하는 코드를 짤 수도 있다.
728x90
반응형
'Java' 카테고리의 다른 글
[Java] Comparator , Comparable 를 이용하여 정렬하기. (2) | 2021.01.11 |
---|---|
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) (3) | 2020.11.17 |
[Java] Java volatile? (0) | 2020.11.10 |
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 커링
- 날짜 유효성
- 카카오 인턴십
- yyyy-MM-dd
- 1629
- 카카오 코딩 테스트
- 39회차
- 가장 큰 수
- 프로그래머스
- 반례
- 01타일
- RGB거리
- 청소년상어
- 삼성 코테
- vaild
- spring cache
- 문자열 압축
- javascript
- java
- 키패드 누르기
- 삼성기출
- DP
- local cache
- 19236
- 제네릭(Generic)
- 제네릭 타입
- 삼각달팽이
- 오버로딩
- 백준
- for of
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함