public enum CountryStore { AD(Language.en, Measures.METRIC, Subdomain.AND), AE(Language.en, Measures.METRIC, Subdomain.AE), AF(Language.en, Measures.METRIC, Subdomain.AF), ... private final Language defaultLanguage; private final Measures defaultMeasure; private final Subdomain subdomain; CountryStore(Language defaultLanguage, Measures defaultMeasure, Subdomain subdomain) { this.defaultLanguage = defaultLanguage; this.defaultMeasure = defaultMeasure; this.subdomain = subdomain; } private final static Map<String, StoreCode> subdomainMap; static { // Reverse lookup preparation for subdomains. Map<String, CountryStore> smap = new HashMap<String, CountryStore>(); for(CountryStore store: CountryStore.values()) { smap.put(store.getSubdomain().name().toLowerCase(), store); } subdomainMap = Collections.unmodifiableMap(smap); } public static CountryStore fromSubdomain(String subdomain) { return subdomain == null ? null : subdomainMap.get(subdomain.toLowerCase()); } }
viernes, 12 de febrero de 2016
Enums: Buscando valores de manera invertida
Un tip interesante para simplificar la búsqueda en un enum por alguna de sus propiedades. En este ejemplo tenemos un enum para tiendas de países. Una de sus propiedades es el subdominio. Si queremos tener un método para retornar el valor de la tienda usando como entrada el subdominio, podemos preparar un mapa de manera estática donde la llave es el subdominio.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario