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() }
它会给我错误:“For-loop范围必须有一个迭代器方法”。 我在这里错过了什么?
你的ArrayList
是可为空的类型。 所以,你必须解决这个问题。 有几个选项:
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()
- 没有参数错误改造请求正文
- 在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空类型的com.android.build.gradleBasePlugin”
- Kotlin – 混淆的属性名称
- 如何在父上下文中创建变量
- 期待会员减免
- Android – 以下类的超types无法解析 – (Room Persistant Library,Android Library Module)
- Anko布局 – 区别布局applyRecursively
- 代码“val jsonObj = json作为JsonObject”在Kotlin中是什么意思?
- Kotlin运行时jar vs kotlin stdlib jar