y
interface MyInterface<R> { fun doIt(): R } object MyImpl : MyInterface<String> { override fun doIt(): String = "hello" } object MyOtherImpl : MyInterface<Int> { override fun doIt(): Int = 5 }
fun <R> foo(impl: MyInterface<R>): R = impl.doIt()
impl
fun <R> foo(impl: MyInterface<R> = MyImpl) = impl.doIt()
fun foo() = foo(MyImpl)
Paul Griffith
Loney Chou
MyImpl
String
MyInterface<R>
R
impl: MyInterface<R>
A modern programming language that makes developers happier.