Sam Garfinkel
05/28/2020, 3:11 PMHanno
05/28/2020, 5:01 PMparth
05/28/2020, 5:06 PMClass<T>
, not KClass
, since Java doesn’t know about kotlin classes; other than that 👍🏾Stefan Beyer
05/28/2020, 5:06 PMStefan Beyer
05/28/2020, 5:32 PMStefan Beyer
05/28/2020, 5:34 PMSam Garfinkel
05/28/2020, 5:38 PMSam Garfinkel
05/28/2020, 5:40 PMClass<T>
Sam Garfinkel
05/28/2020, 5:41 PMStefan Beyer
05/28/2020, 5:43 PMStefan Beyer
05/28/2020, 5:45 PMSam Garfinkel
05/28/2020, 5:46 PMSam Garfinkel
05/28/2020, 5:46 PMStefan Beyer
05/28/2020, 5:50 PMSam Garfinkel
05/28/2020, 5:51 PMRequiresOptIn
along with an annotation on an inlined function to actually synthesize the non-reified function.Stefan Beyer
05/28/2020, 6:03 PM@RequiresOptIn
annotation class ReflectiveInlinePermitted
@ReflectiveInlinePermitted
inline fun <reified T> libraryFunction(): T = TODO()
@OptIn(ReflectiveInlinePermitted::class)
fun consumerFunction() {
println(libraryFunction<String>())
}
or like this
@RequiresOptIn
annotation class ReflectiveInline
inline fun <reified T> libraryFunction(): T = TODO()
@ReflectiveInline
fun <T> slowLibraryFunction(clazz: Class<T>) = libraryFunction<T>()
fun consumerFunction() {
println(libraryFunction<String>())
}
Stefan Beyer
05/28/2020, 6:04 PMSam Garfinkel
05/28/2020, 6:11 PM@RequiresOptIn
annotation class SynthesizeReflectiveOverload
@SynthesizeReflectiveOverload
inline fun <reified T> libraryFunction(): T = TODO()
fun consumer() {
println(libraryFunction(String::class.java))
}
Stefan Beyer
05/28/2020, 6:13 PMSam Garfinkel
05/28/2020, 6:13 PMStefan Beyer
05/28/2020, 6:16 PMSam Garfinkel
05/29/2020, 4:08 AMSam Garfinkel
05/29/2020, 4:08 AMStefan Beyer
05/29/2020, 9:09 AMSam Garfinkel
05/29/2020, 1:59 PM