tipsy
09/13/2018, 11:25 PMprivate val converters = mapOf<Class<*>, (String) -> Any>(
Int::class.java to { s -> s.toInt() },
Integer::class.java to { s -> s.toInt() },
Double::class.java to { s -> s.toDouble() },
Long::class.java to { s -> s.toLong() },
Date::class.java to { s -> Date(s) }
)
fun <T> getAs(clazz: Class<T>, converter: ((String) -> T)? = null): T {
val c = converter ?: converters[clazz] ?: throw IllegalArgumentException("Can't auto-cast to $clazz. Add a converter as a second argument.")
return try {
c.invoke(value)
} catch (e: Exception) {
...
} as T
}
gildor
09/14/2018, 3:11 AMtipsy
09/14/2018, 7:31 AM