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
Могут ли функции расширения быть вызваны «статическим» способом? Вертикальная вертикальная (Vertical) Vert.x конфигурация JSON / YAML (предпочтительнее для каждой среды) Отправлять данные, полученные из Parse SDK в одном классе приложений, в Activity in android Как использовать @DbEnumValue с Ebean в Котлине? Kotlin NDArray с конструктором лямбда с общим типом возврата Что такое эквивалент Котлина для поразрядного или с присвоением '| ='? Все еще получение исключения IllegalStateException при использовании API People от Google, несмотря на подписку на другой поток с использованием RxJava tail rec kotlin list Как подавить проверку орфографии на константе строки в Android Kotlin? почему work.map (запуск потока) .foreach (join ()) работает в kotlin? Тип функции Kotlin вместо функционального интерфейса лямбда Инструменты статического анализа для языка программирования Kotlin? В чем разница между этими флагов компилятора Kotlin? AspectJ Проблемы компилятора с передачей kotlin в иерархии типов Ошибка компиляции во время преобразования класса RealmObject в Kotlin