具有泛型返回类型的函数
是否有可能返回一个泛型类型的函数? 就像是:
fun <T> doSomething() : T { when { T is Boolean -> somethingThatReturnsBoolean() T is Int -> somethingThatReturnsInt() else -> throw Exception("Unhandled return type") } }
你可以使用reified类型,像这样:
inline fun <reified T> doSomething() : T { when (T::class.java) { Boolean::class.java -> somethingThatReturnsBoolean() Int::class.java -> somethingThatReturnsInt() else -> throw Exception("Unhandled return type") } }
它使真正的T类型可访问,但只适用于内联函数。 如果你想要一个常规的功能,你可以尝试:
inline fun <reified T> doSomething() : T = doSomething(T::class.java) fun <T> doSomething(klass: Class<T>) { ... }