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

时间:2016-08-31 14:05:30

标签: kotlin

例如

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

T : Summable表示任何类型T支持+运算符,即定义了.plus方法。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您可能需要查看GitHub上的DucKtypes项目,该项目允许“静态鸭子”。例如:

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

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