2013년 5월 31일 금요일

Generic

Generic을 사용하지 않았을 경우

 
-> 이렇게 할 경우 dto2의 인스턴스 변수의 타입이 StringBuilder인지 StringBuffer 인지 혼동될수가 있다.
그래서  이런경우는 instanceOf라는 예약어를 사용하여 타입을 점검해야한다.
 
 
-> 그래서 이런 타입 형 변환에서 발생할 수 있는 문제점을 "사전"에 없애기 위해 만들어진것이 제네릭이다.

 
-> 제네릭을 이용해서 형변환이 필요 없는것을 볼수 있다. 명시적으로 타입을 지정할 때 사용하는 것이 제네릭이다.
 
 
* 제네릭 타입의 이름
  E : 요소 (Element, 자바 컬렉션(Collection)에서 주로 사용)
  K : 키
  N : 숫자
  T : 타입
  V : 값
  S, U, V : 두번째, 세번째, 네번째에 선언된 타입
 
public void wildcardMethod(wildcardGeneric<?> c){
  Object value = c.getWildcard();
  System.out.println(value);
 
-> ?를 이용한 것은 메소드의 매개 변수로만 사용하는 것이 좋다.
 
 
< ? extend s Car> c
-> 이런식으로 정의한것은 제네릭 타입으로 Car을 상속받은 모든 클래스를 사용할 수 있다는 것을 의미
 


 <T extends Comparable<T>> 는 "자신과 비교될 수 있는 모든 타입 T" 라고 읽는다.

 
 
 
 

 
 

 

댓글 없음:

댓글 쓰기