Мне нужна функция, которая может принимать ArrayList разных типов и выполнять с ним некоторые операции. Например, я хотел бы напечатать все элементы массива. Я пробовал это:
val numbers by lazy {ArrayList<Int>(0)}
val texts by lazy {ArrayList<String>(0)}
fun main() {
numbers.add(1)
numbers.add(2)
numbers.add(3)
texts.add("one")
texts.add("two")
texts.add("three")
printAll(numbers) //error here
printAll(texts) //error here
}
fun printAll(values: ArrayList<Any>){
values.forEach{item ->
println(item)
}
}
Однако я получаю эту ошибку:
Type mismatch: inferred type is kotlin.collections.ArrayList<Int> /* = java.util.ArrayList<Int> */ but kotlin.collections.ArrayList<Any> /* = java.util.ArrayList<Any> */ was expected
Type mismatch: inferred type is kotlin.collections.ArrayList<String> /* = java.util.ArrayList<String> */ but kotlin.collections.ArrayList<Any> /* = java.util.ArrayList<Any> */ was expected
Это упрощенная версия того, что я хочу сделать. В моей реальной реализации аргумент values
принимается из другой функции обратного вызова, и мне нужно делать более сложные вещи с элементами, чем просто печать.
Что мне следует попробовать в аргументе функции? Благодаря.