/** * Makes an empty EnumOrderedMap (EOM); needs key and value types to be specified in order to work. For an empty * EnumOrderedMap with Radius keys and Coord values, you could use {@code Maker.<Radius, Coord>makeEOM()}. Using * the new keyword is probably just as easy in this case; this method is provided for completeness relative to * makeEOM() with 2 or more parameters. * @param <K> the type of Enum keys in the returned EnumOrderedMap; cannot be inferred and must be specified * @param <V> the type of values in the returned EnumOrderedMap; cannot be inferred and must be specified * @return an empty EnumOrderedMap with the given key and value types. */ public static <K extends Enum<K>, V> EnumOrderedMap<K, V> makeEOM() { return new EnumOrderedMap<>(); }
EnumOrderedMap<K, V> eom = new EnumOrderedMap<>(); eom.put(k0, v0); return eom; EnumOrderedMap<K, V> eom = new EnumOrderedMap<>(k0); eom.put(k0, v0);
@Override @SuppressWarnings("unchecked") public EnumOrderedMap read(Json json, JsonValue jsonData, Class type) { if(jsonData == null || jsonData.isNull()) return null; String c = json.readValue("c", String.class, "", jsonData); if("default".equals(c)) return new EnumOrderedMap(); try { Class<? extends Enum<?>> cl = ClassReflection.forName(c); if(!ClassReflection.isEnum(cl)) return null; Enum<?> k = json.readValue("k", cl, jsonData); Object v = json.readValue("v", null, INVALID, jsonData); Object[] r = json.readValue("r", Object[].class, jsonData); if(v == INVALID) return new EnumOrderedMap(); return Maker.makeEOM(k, v, r); } catch (ReflectionException e) { return null; } //return new OrderedMap(json.readValue(OrderedSet.class, jsonData.get("k")), // json.readValue(ArrayList.class, jsonData.get("v")), jsonData.getFloat("f")); } });