본문 바로가기

AdvancedJava

[3일차] 제네릭

<T>

왜 제네릭을 쓸까 ??

컴파일 단계에서 에러를 띄우기 위해서 




클래스나 메소드 안에서 특정한 타입을 정해서 쓸 수 있다 .



<T extends String>?


T data;



// 이 경우 data에 String이 보장되기 때문에 data.substring(); 접근이 가능하다. 



String 도 상속받고, 인터페이스도 상속받고 싶을때,


<T extends String & I> 


이렇게 처리할 수 있다. 



이렇게 하면 된다. 


메소드에 쓰고 싶을 때는


public<T> void putData(T data){


}

이렇게 쓸 수 있다.


임의에  제네릭 타입을 넣는 경우

데이터를 추가할 순 없다. 


public printLog(MyClass<?> p){

}


타입과 관계없는 것을 불러올 때 사용한다. 




이게 끝이지만 많이 쓴다. 


예를 들면 파싱한 경우, 처리하고 결과를 넘겨주는 함수는 제네릭으로 만든 다. 


절차는 동일, 타입이 다를때,



실습


동일한 속성의 Drawable 객체를 묶어서 관리하는 Drawable Group 을 생성하고싶다. 

DrawableGroup 패키지생성.

AbstractDrawable 상속

<T extends Drawable>

Drawable을 상속한 애들만 쓰게 금

List<T> items = new ArrayList<T>();
여기서 아이템을 추가하는 함수 생성
add(T item){
item 추가
}

getsize()
return items.size();

draw()에 출력하는거 for문으로 추가 d.draw컨버스

getBounds에 
if 문으로  사이즈가 제로면 return null; 추가

드로어블을 받는 으로어블 그룹 


'AdvancedJava' 카테고리의 다른 글

[3일차] list 실습  (0) 2016.07.07
[3일차] List Array,Collection  (0) 2016.07.07
[3일차] 어노테이션 실습  (0) 2016.07.07
[3일차] 어노테이션  (0) 2016.07.07
[3일차] 예외 처리 실습.  (0) 2016.07.07