如何在Kotlin中指定duck typing(隐式接口)泛型?

例如

// Not valid Kotlin code. fun <T : Summable> myFunction ... 

T : Summable表示任何类型T支持+操作符,即定义了一个.plus方法。

Kotlin中没有这样的功能,目前还没有计划将来发布。

你可能想看看GitHub的DucKtypes项目,它允许“静态ducktyping”。 例如:

 interface Summable { fun plus() } object x { fun plus(){ println("plus") } } fun myFunction( s : Summable ){ s.plus() } myFunction( x ) 

这个项目还很新,但很快就会有一个gradle-plugin来自动生成代码。