我想创建一个通用的总结方法,使用数字,字符和字符串
fun <T> sumAndPrint(vararg elements: T?): T where T : Char?, T : String?, T : Number? {
when (elements[0]) {
is String, is Char -> {
var result: String = ""
elements.forEach { result += it.toString() }
return result as T
}
is Number -> {
var result: Double = 0.0
elements.forEach { result += it.toDouble() }
return when(elements[0]){
is Float, is Double -> result as T
is Int -> result.toInt() as T
is Byte -> result.toInt().toByte() as T
else -> result as T
}
}
else -> {
println("Unsupported type")
return null
}
}
}
字符串
但是我遇到了几个错误,比如“只有一个上界可以是一个类”。
我试过不同的方法,但我没有找到一个解决办法,我只是想知道这样的事情是否可能
1条答案
按热度按时间igetnqfo1#
不,这是不可能的,就像扩展多个类是不可能的一样。
但是,你可以将这个方法设为私有,删除
where
部分,并创建三个非泛型的公共方法。这些方法应该分别接受String
、Char
和Number
元素。在这些方法的主体中,调用你的私有函数。例如:
字符串