2017-07-14 21 views

回答

3

這只是「只是」一個警告,說它不是100%安全的投射。更好的選擇是:

if (objectOfTypeAny is List<*>) { 
     val a: List<Apples> = objectOfTypeAny.filterIsInstance<Apples>() 
     ... 
} 

詳見https://kotlinlang.org/docs/reference/typecasts.html

+0

這不會刪除警告,不會檢查轉換,實際上甚至不會編譯。 –

+0

@JBNizet是的,它的工作原理。在你侮辱某人之前,請先嚐試一下。 – guenhter

+0

1.我沒有侮辱任何人。 2.我試了一下:'錯誤:(7,31)Kotlin:類型不匹配:推斷類型是Any,但預期列出。親自看看:http://rextester.com/ISWQP14284 –

2

除了忽略警告(或改進設計以避免演員),沒有。

此警告意味着即使列表實際上不是List<Apples>,但包含的內容不是Apples,也可以在運行時執行強制轉換。

它存在,因爲泛型沒有在Java中實現。泛型使用類型擦除。他們是編譯時安全網,而不是運行時安全網。

相關問題