최근 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 허혁

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

◀ PREV : [1] : ... [41] : [42] : [43] : [44] : [45] : [46] : [47] : [48] : [49] : ... [88] : NEXT ▶

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 대한민국 라이선스에 따라 이용하실 수 있습니다.