default <X> X as(Class<X> type) throws ConversionException { throw new ConversionException("Cannot convert self to " + type); }
default <X> X as(Class<X> type) throws ConversionException { throw new ConversionException("Cannot convert self to " + type); }
private Object parse(String source, Class<?> targetType) throws AssertionError { if (targetType.isEnum()) { String vlow = source.toLowerCase(); for (Enum<?> e : targetType.asSubclass(Enum.class).getEnumConstants()) { if (e.name().toLowerCase().equals(vlow)) { return e; } } throw new ConversionException("Enum constant not found: " + source); } else if (targetType == Double.class || targetType == Double.TYPE) { return Double.valueOf(source); } else if (targetType == Integer.class || targetType == Integer.TYPE) { return Integer.valueOf(source); } else if (targetType == String.class) { return source; } else if (targetType.isArray()) { String[] strVals = source.split(",", -1); Class<?> arrayType = targetType.getComponentType(); Object a = Array.newInstance(arrayType, strVals.length); for (int i = 0; i < strVals.length; i++) { Array.set(a, i, parse(strVals[i], arrayType)); } return a; } throw new ConversionException("Unknown return type " + targetType + " (val: " + source + ")"); } }
private Object parse(String source, Class<?> targetType) throws AssertionError { if (targetType.isEnum()) { String vlow = source.toLowerCase(); for (Enum<?> e : targetType.asSubclass(Enum.class).getEnumConstants()) { if (e.name().toLowerCase().equals(vlow)) { return e; } } throw new ConversionException("Enum constant not found: " + source); } else if (targetType == Double.class || targetType == Double.TYPE) { return Double.valueOf(source); } else if (targetType == Integer.class || targetType == Integer.TYPE) { return Integer.valueOf(source); } else if (targetType == String.class) { return source; } else if (targetType.isArray()) { String[] strVals = source.split(",", -1); Class<?> arrayType = targetType.getComponentType(); Object a = Array.newInstance(arrayType, strVals.length); for (int i = 0; i < strVals.length; i++) { Array.set(a, i, parse(strVals[i], arrayType)); } return a; } throw new ConversionException("Unknown return type " + targetType + " (val: " + source + ")"); } }