Kotlin: For-loop должен иметь метод итератора – это ошибка?

У меня есть код ниже:

public fun findSomeLikeThis(): ArrayList<T>? { val result = Db4o.objectContainer()!!.queryByExample<T>(this as T) as Collection<T> if (result == null) return null return ArrayList(result) } 

Если я так назову:

 var list : ArrayList<Person>? = p1.findSomeLikeThis() for (p2 in list) { p2.delete() p2.commit() } 

Это дало бы мне ошибку: «Для диапазона циклов должен иметь метод итератора». Я что-то упустил?

Ваш ArrayList имеет тип NULL. Итак, вы должны решить это. Существует несколько вариантов:

 for (p2 in list.orEmpty()) { ... } 

или

  list?.let { for (p2 in it) { } } 

или вы можете просто вернуть пустой список

 public fun findSomeLikeThis(): List<T> //Do you need mutable ArrayList here? = (Db4o.objectContainer()!!.queryByExample<T>(this as T) as Collection<T>)?.toList().orEmpty() 
Intereting Posts
напишите шестнадцатеричный целочисленный литерал, равный Int.MIN_VALUE в Котлине Какова цель Декларации объекта внутри герметичного класса в Котлине? Как получить класс java из общего параметра param? Демонстрационная версия Corda V1.0 IOU не работает в Windows Поиск с помощью RxJava не работает Конфигурация безопасности пружины Kotlin Студия Android не разрешает классы, написанные в Kotlin (.kt) в среде IDE, но компилирует отлично Тестирование модулей плагина Intellij IDEA (зависимости от проекта) Проблема с компиляцией Dagger2 в Котлине Параллельные сопрограммы Kotlin Как добавить +/- функциональность к боттингу в андроиде kotlin Обобщить метод с нулевыми аргументами и возвращаемым типом BluetoothSocket не подключается к целевому устройству Библиотека Android, написанная в Kotlin, обеспечивает поддержку Java-приложений Почему я вынужден использовать !! в сочетании с нулевыми проверками?