탬플릿 클레스 만들기

5.0에 새로 추가된 generic을 c++에서는 탬플릿이라고 하더군요. c++에도 처음 에는 없었지만 나중에 추가 된 기능이라고 합니다. 개인적으로 Generic 보다는 탬플릿이라는 이름이 기능과 참 잘 어울리네요.

Daum DNA에 올라온 소스 코드를 보겠습니다.
[#M_ more.. | less.. |

class AnyTypeList<T> {
//class AnyTypeList<T extends Number> { // <-- 이는 Number를 상속한 type은 허용하겠다는 의미.
private List<T> list;
//private static List<T> list; // <-- 이는 정적이므로 compile error 발생!!!
public AnyTypeList(){
list = new LinkedList<T>();
}

public boolean isEmpty(){
return list == null || list.size() == 0;
}

public void add(T t){
list.add(t);
}

public T grap(){
if (!isEmpty() ) {
return list.get(0);
} else {
return null;
}
}
}

_M#]
이런식으로 List를 구현해 두면 정말 편하게 사용할 수 있겠습니다. 물론 5.0 java.util에 있는 collection에서 제공해주는 API들도 이런 모양을 하고 있지요. 다소 복잡해 보이지만요.. 오늘 토비님 블러그올라온 글을 보니 실제도로 복잡한 것 같습니다.