我想用kotlin语言创建一个通用函数,它将添加所有类型的数字,即Double、Float、Long、Int、Byte、Char、Short。所以我创建了一个函数:
fun <T : Number> add (a: T, b: T) = a + b
但是Android Studio IDE在+
符号上抛出编译时错误,因为Number
类没有plus
方法。为什么?有人能在不使用if else
或when
语句的情况下为kotlin
中的泛型函数提供解决方案吗。
除非检查它们的类型并强制转换,否则函数只知道它们都是数字。没有Number.plus(Number)
函数,所以不能按原样添加。您可以将它们转换为Doubles并添加,因为有Number.toDouble()
函数。该类型不需要具体化。
fun <T : Number> add (a: T, b: T) = a.toDouble() + b.toDouble()