我在下面有四個 ArrayList,我將 ArrayList 與安全呼叫運算子和 Not Null Assertion Operator 混淆了,即使我知道?和!!在 Kotlin 中是什么意思,任何人都可以為我解釋一下嗎?我該如何解釋這四個 ArrayList情況?謝謝。
ArrayList<User?>?, ArrayList<User?>, ArrayList<User>? and ArrayList<User>
或者
ArrayList<String?>?,ArrayList<String?>,ArrayList<String>? and ArrayList<String>
uj5u.com熱心網友回復:
?型別中的這些使用與安全呼叫或非空斷言無關。
簡而言之:
?串列型別中的A <>likeArrayList<User?>表示串列可以包含空值。
?串列的完整型別之后的AArrayList<User>?表示串列本身可以為空。
有?像這兩個地方ArrayList<User?>?的手段兩者。它是一個可以保存空值并且本身可能為空的串列。
沒有任何問號,它是一個不為空且不能包含空值的 List。
uj5u.com熱心網友回復:
這可以解釋四種型別宣告:
val input = listOf("ArrayList<User?>?",
"ArrayList<User?>",
"ArrayList<User>?",
"ArrayList<User>")
input.forEach {
val arr = it.split(Regex("[<>]"))
val null1 = if (it.endsWith('?')) "nullable" else "not-null"
val null2 = if (arr[1].endsWith('?')) "nullable" else "not-null"
println("$it : $null1 ${arr[0]} with $null2 elements in type ${arr[1].replace(Regex("[?]"),"")}")
}
它列印:
ArrayList<User?>? : nullable ArrayList with nullable elements in type User
ArrayList<User?> : not-null ArrayList with nullable elements in type User
ArrayList<User>? : nullable ArrayList with not-null elements in type User
ArrayList<User> : not-null ArrayList with not-null elements in type User
uj5u.com熱心網友回復:
希望這能幫助您清除:
var nullableArrayOfNullableItems: ArrayList<User?>?
// you can do that
nullableArrayOfNullableItems = null
// you also can do that
nullableArrayOfNullableItems = arrayOf(null)
var arrayOfNullableItems: ArrayList<User?>
// you CANT do that
arrayOfNullableItems = null
// you can do that
arrayOfNullableItems = arrayOf(null)
var nullableArrayOfNonnullableItems: ArrayList<User>?
// you can do that
nullableArrayOfNonnullableItems = null
// you CANT do that
nullableArrayOfNonnullableItems = arrayOf(null)
var arrayOfNonnullableItems: ArrayList<User>
// you CANT do that
arrayOfNonnullableItems = null
// you CANT do that
arrayOfNonnullableItems = arrayOf(null)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/405213.html
標籤:
上一篇:嘗試在空物件參考上呼叫虛擬方法“voidandroid.widget.ListView.setAdapter(android.widget.ListAdapter)”:KOTLIN
下一篇:十進制格式值自定義問題
