泛型编号添加函数



我想用kotlin语言创建一个通用函数,它将添加所有类型的数字,即Double、Float、Long、Int、Byte、Char、Short。所以我创建了一个函数:

fun <T : Number> add (a: T, b: T) = a + b 

但是Android Studio IDE在+符号上抛出编译时错误,因为Number类没有plus方法。为什么?有人能在不使用if elsewhen语句的情况下为kotlin中的泛型函数提供解决方案吗。

除非检查它们的类型并强制转换,否则函数只知道它们都是数字。没有Number.plus(Number)函数,所以不能按原样添加。您可以将它们转换为Doubles并添加,因为有Number.toDouble()函数。该类型不需要具体化。

fun <T : Number> add (a: T, b: T) = a.toDouble() + b.toDouble()

最新更新