我有以下代码:
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 range must have an 'iterator()' method
我错过了什么吗?
最佳答案
您的 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()
https://stackoverflow.com/questions/29201182/
相关文章:
android - 抑制 "Identifier not allowed in Android"
java - Kotlin 文件是否应该放在 Android 中的单独源目录中?
java - Smartcast 是不可能的,因为属性有开放的或自定义的 getter
intellij-idea - 为什么 IntelliJ 建议将调用链转换为序列?
kotlin - 如何使用 Gradle Kotlin 脚本创建胖 JAR?
java - isInitialized - lateinit var 的支持字段此时不可访问
kotlin - 带有 T.() 的 Kotlin 函数签名是什么意思?