지도의 키 집합을 내 열거 형으로 검증해야하는지도가 있습니다. enum을 사용하여지도의 키 집합을 확인하는 우아한 방법은 무엇입니까?
public enum Tag {
rename, duplicate, process, limit, encode, decode;
};
지금지도의
keyset
위에서 열거의 값을 가져야한다 : 아래 그림과 같이 내가 열거 클래스가 있습니다. 내 키 집합에 열거 형에없는 값이 들어 있으면
IllegalArgumentException
값을 내 열거 형에서 누락시키고 싶습니다.
다음은 내 코드입니다 :
public Processor(Map<String, String> tasks) {
Set<String> keyset = tasks.keySet();
for (String tag : keyset)
checkArgument(!EnumUtils.isValidEnum(Tag.class, tag), "unknown tag found '%s'.", tag);
}
당신은 내가 keyset
을 반복하고 Preconditions.checkArgument
검사를하고있는 중이 야 볼 수 있듯이. 그것이 없다면 IllegalArgumentException
을 던질 것입니다. 그래도 메시지를 던지면 개선 될 수 있다고 확신합니다.
내 질문은 : 내가하고있는 것과 똑같은 일을하는 더 좋은 방법이 있습니까? 확인을 위해 for 루프의 keyset
을 반복해야합니까? 또는 하나의 라이너 또는이 유효성 검사를 수행하는 다른 더 좋은 방법이 있습니까?
Java7을 사용하고 있습니다.
지도에'Tag' 열거 형의 키를 넣고 싶다면 정말 Map이 아니어야합니다. –
user2357112
그냥'Map'을 사용 하시겠습니까? EnumMap이라 할지라도? –
chrylis