當我嘗試像下面這個例子那樣將任何東西轉換成列表時,我會得到'未選中的轉換:任何轉換爲列表'警告。有這種問題的解決方法嗎?如何將任何內容投射到Kotlin的列表中?
val x: List<Apples> = objectOfTypeAny as List<Apples>
當我嘗試像下面這個例子那樣將任何東西轉換成列表時,我會得到'未選中的轉換:任何轉換爲列表'警告。有這種問題的解決方法嗎?如何將任何內容投射到Kotlin的列表中?
val x: List<Apples> = objectOfTypeAny as List<Apples>
這只是「只是」一個警告,說它不是100%安全的投射。更好的選擇是:
if (objectOfTypeAny is List<*>) {
val a: List<Apples> = objectOfTypeAny.filterIsInstance<Apples>()
...
}
除了忽略警告(或改進設計以避免演員),沒有。
此警告意味着即使列表實際上不是List<Apples>
,但包含的內容不是Apples
,也可以在運行時執行強制轉換。
它存在,因爲泛型沒有在Java中實現。泛型使用類型擦除。他們是編譯時安全網,而不是運行時安全網。
這不會刪除警告,不會檢查轉換,實際上甚至不會編譯。 –
@JBNizet是的,它的工作原理。在你侮辱某人之前,請先嚐試一下。 – guenhter
1.我沒有侮辱任何人。 2.我試了一下:'錯誤:(7,31)Kotlin:類型不匹配:推斷類型是Any,但預期列出。親自看看:http://rextester.com/ISWQP14284 –