tipsy
09/13/2018, 7:37 PMfun <T> getAs(clazz: Class<T>, converter: ((String) -> Any)? = null): T {
return if (converter != null) {
convert(clazz) { converter.invoke(value) } as T
} else when (clazz) {
Int::class.java -> convert(clazz) { value.toInt() } as T
Integer::class.java -> convert(clazz) { value.toInt() } as T
Double::class.java -> convert(clazz) { value.toDouble() } as T
Long::class.java -> convert(clazz) { value.toLong() } as T
Date::class.java -> convert(clazz) { Date(value) } as T
else -> throw IllegalArgumentException("Can't auto-cast to $clazz. Add a converter as a second argument.")
}
}
private fun convert(clazz: Class<*>, converter: () -> Any): Any = try {
converter.invoke()
} catch (e: Exception) {
...
}