@Override public int hashCode() { return uniqueKey(this.clazz, this.name).hashCode(); }
@Override public int hashCode() { return uniqueKey(this.clazz, this.name).hashCode(); }
@SuppressWarnings("unchecked") protected T withNameValue(String name, T value, Class<T> clazz) { if (valuesByName == null) { valuesByName = new ConcurrentHashMap<String, T>(); } this.name = name; this.clazz = clazz; ((ConcurrentMap<String, T>) valuesByName).put(uniqueKey(clazz, name), value); return (T) this; }
@SuppressWarnings("unchecked") protected T withNameValue(String name, T value, Class<T> clazz) { if (valuesByName == null) { valuesByName = new ConcurrentHashMap<String, T>(); } this.name = name; this.clazz = clazz; ((ConcurrentMap<String, T>) valuesByName).put(uniqueKey(clazz, name), value); return (T) this; }
@SuppressWarnings("unchecked") protected static <T extends ExpandableStringEnum<T>> T fromString(String name, Class<T> clazz) { if (name == null) { return null; } else if (valuesByName != null) { T value = (T) valuesByName.get(uniqueKey(clazz, name)); if (value != null) { return value; } } try { T value = clazz.newInstance(); return value.withNameValue(name, value, clazz); } catch (InstantiationException e) { return null; } catch (IllegalAccessException e) { return null; } }
@SuppressWarnings("unchecked") protected static <T extends ExpandableStringEnum<T>> T fromString(String name, Class<T> clazz) { if (name == null) { return null; } else if (valuesByName != null) { T value = (T) valuesByName.get(uniqueKey(clazz, name)); if (value != null) { return value; } } try { T value = clazz.newInstance(); return value.withNameValue(name, value, clazz); } catch (InstantiationException e) { return null; } catch (IllegalAccessException e) { return null; } }