При написании функции, которая пытается прочитать строку из внешнего источника и предоставляет значение по умолчанию в случае, если она не может достичь источника, я мог бы написать такую функцию:
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 { ... }
Здесь компилятор говорит:
Верхняя границапараметра типа не может быть массивом
Есть ли другой способ, которым я мог бы достичь этого?