최근 apache common의 enum 객체에서

switch case 문을 위해 java.lang의 enum 객체로 옮겨왔었는데

public static Iterator iterator( Class enumClass ) {


이런 메소드에서 Iterator의 제네릭을 사용하지 않아

계속 어노테이션을 붙여주어야만 했다.

그래서 지난 금요일 부터 오늘 월요일 오전까지

generic을 지원하는 방향으로 수정을 가했다.

먼저 Enum 객체를 들여다 보고

<T extends Enum<T>>을 추가해서

쉽게 넘어가보려고 했으나.

내부에서 사용중인

public static getEnum( Class enumClass, String code ) {


객체에서 제대로 지원을 못해주는 경우가 발생했다.

Enum에서 지원 못해주는

축약형 이름 지원을 사용하고 싶었는데

위에서 code로 표시 된 것이다.

그래서

public interface CodeEnum {
    public String getCode();
}


이라는 간단한 인터페이스로 감싸주었는데

이것을 <T extends Enum<T>> 키워드를 추가하려고 하니

동시에 두가지 형태를 지원하는 것에 대한 자료를 찾아보았다.

한글 블로그 이지만 영어로 정리가 잘 되어 있다.

결론적으로

해결책은

public static <T extends Enum<T> & CodeEnum> T getEnum( Class<T> enumClass, String code ) {


이렇게 함으로써

두가지 형식을 검사할 수 있게 되었다.

이런 개선 사항에 즐거움을 느끼며 작성한다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 허혁

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
안녕하세요. 안정된 코딩, 여유로운 프로젝트, 떠오르는 코더 by 허혁

카테고리

분류 전체보기 (88)
direct (50)
indirect (21)
transmissive (10)
agenda (4)
idea (3)

달력

«   2008/07   »
    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    

최근에 달린 레몬펜 쪽지

Statistics Graph
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.