在编写试图从外部源读取字符串并提供默认值(如果无法到达源)的函数时,我可以编写如下函数:
fun <V : String?> getString(defValue: V): V {
// ...
}
val s1: String = getString("Default")
val s2: String? = getString(null)
由于String
是最终类,因此此处不能使用其他类型。我什至不必提供s1
和s2
的类型,因为Kotlin可以根据很好的默认值的类型自行找出它们。但是,如果我想编写一个IntArray
这样的函数,则不能编写类似以下的函数:
fun <V : IntArray?> getIntArray(defValue: V): V { ... }
编译器在这里说:
类型参数的上限不能是数组
还有其他方法可以实现这一目标吗?