Sintaxis literal de class para classs parametrizadas en Kotlin

Estoy tratando de burlarme de una function en Kotlin

Mockito.mock(Function2<Int, Int, Unit>::class.java) 

y dice "Solo se permiten classs en el lado izquierdo de un literal de class" . ¿Cuál es la forma correcta de get una reference a una class parametrizada conocida de forma estática? Por ahora yo vivo con un reparto feo

 Mockito.mock(Function2::class.java) as (Int, Int) -> Unit 

El error es correcto y la solución que proporcionó es la deseada. El razonamiento aquí es que, dado que los arguments de tipo genérico no se reifican en el time de ejecución, solo se puede get un object que represente una class , no un tipo .

Sin embargo, hay una solución alternativa: si utiliza la syntax literal de class a través de un parámetro de tipo reificado, sustituyéndolo por el tipo deseado en el sitio de la llamada, obtendrá el mismo object KClass pero con los arguments reales que ha proporcionado. En su caso, puede declarar la siguiente function:

 inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java) as T 

Y úsalo así:

 val f = mock<(Int, Int) -> Unit>()