Ich habe eine Karte, in der ich Keyset der Karte mit meinem enum validieren muss. Ich habe eine Enum-Klasse wie folgt:Elegante Möglichkeit, Schlüsselsatz einer Karte mit einem Enum zu validieren?
public enum Tag {
rename, duplicate, process, limit, encode, decode;
};
Jetzt keyset
der Karte sollten Werte von oben Enum haben. Wenn mein Keyset einen Wert enthält, der in der Enumeration nicht vorhanden ist, dann möchte ich IllegalArgumentException
mit dem fehlenden Wert aus meiner Enum werfen.
Unten ist mein Code:
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);
}
Wie Sie sehen, ich bin keyset
Iterieren und Preconditions.checkArgument
Prüfung zu tun. Wenn es nicht da ist, wird es IllegalArgumentException
werfen. Ich bin sicher, dass das Werfen von Nachrichten verbessert werden kann.
Meine Frage ist: Gibt es eine bessere Möglichkeit, das Gleiche zu tun, als was ich tue? Muss ich die keyset
in der for-Schleife durchlaufen, um die Überprüfung durchzuführen? Oder gibt es einen Liner oder einen anderen besseren Weg, um diese Validierung durchzuführen?
Ich verwende Java7.
Wenn Sie möchten, dass Ihre Map Schlüssel aus der 'Tag'-Enumeration enthält, sollte es keine' Map 'sein. –
user2357112
Verwenden Sie einfach eine 'Karte'? Vielleicht sogar eine 'EnumKarte'? –
chrylis