티스토리 뷰

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
반응형
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함