Reified generics in interface


Hi, Is there a workaround that achieves the following:

interface Foo {
  inline fun <reified T> foo(thunk: () -> Any): Unit { }


This may come close:

interface Foo {
    fun foo(thunk: () -> Any, klass: KClass<*>)

inline fun <reified T> thunk: () -> Any) = foo(thunk, T::class)

But you’ll need to use klass to perform your casts, etc


Thanks for reply. I am trying to use the interface more as a trait, to provide some methods that can be mixed in to a class. So I want the users of the trait to be able to call foo { } directly from their class, so I don’t want the klass in the method signature that they use.


Can we expect a better fix in the future?


There is a KEEP for something that should help


Similar proposal using KClass