<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 |