2
문자열을 열거 형 T
에 대한 정확한 열거 형으로 변환하는 클래스 EnumConverter<T extends Enum<?>>
(Enum.valueOf
을 사용할 수 없음)이 있습니다. 이 같은 공장 방법이 클래스의 인스턴스를 생성 :제네릭을 사용하는 정적 팩터 리 메서드
public static <T extends Enum<?>> EnumConverter<T> getInstance(Class<T> enumClass) {
return new EnumConverter<T>(enumClass.getEnumConstants());
}
이 작동하지만, 지금은 Map
와 즉 열거 당 하나,이 있는지 확인하기 위해 EnumConverter
인스턴스를 캐시 할 내 문제는 이것을 신고하는 방법은 Map
입니다. 내가 온 가장 가까운 이것이다 :
private static final Map<Class<?>, EnumConverter<? extends Enum<?>>>
하지만 내 팩토리 메소드에서이 Map
에서 값을 반환하려고하면 오류가 발생합니다 :
Type mismatch: cannot convert from EnumConverter<capture#1-of ? extends Enum<?>> to EnumConverter<T>
어떤 아이디어 ?
감사합니다. 그러나 나는 여전히 경고를 받는다 :'타입 안전 : EnumConverter의 체크되지 않은 캐스트 <3 번 캡처? Enum >>을 EnumConverter'으로 확장합니다. 하지만 이것은 유형 삭제로 인해 해결할 수 없을 가능성이 있습니까? –
hakos
대답은 실제로'@SuppressWarnings ("unchecked")'입니다 : http://stackoverflow.com/questions/262367/type-safety-unchecked-cast – hakos